Popularity
3.6
Growing
Activity
5.0
-
58
6
8

Programming language: Go
License: Mozilla Public License 2.0
Tags: Data Structures    
Latest version: v3.5.1

crunch alternatives and similar packages

Based on the "Data Structures" category.
Alternatively, view crunch alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of crunch or a related project?

Add another 'Data Structures' Package

README

crunch

a library for easily manipulating bits and bytes in golang

features | installation | benchmarks | examples

features

  • feature-rich: supports reading and writing integers of varying sizes in both little and big endian
  • performant: performs more than twice as fast as the standard library's bytes.Buffer
  • simple and familiar: has a consistent and easy-to-use api
  • licensed under the mpl-2.0: use it anywhere you wish, just don't change it privately

installation

install with the go tool

$ go get github.com/superwhiskers/crunch/v3

then, just import it in your project like this. easy!

package "yourpackage"

import crunch "github.com/superwhiskers/crunch/v3"

install using git submodules (not recommended)

# this assumes that you are in a git repository
$ git submodule add https://github.com/superwhiskers/crunch path/to/where/you/want/crunch

then, you can import it like this

package "yourpackage"

import crunch "github.com/your-username/project/path/to/crunch/v3"

benchmarks

both Buffer and MiniBuffer perform on average more than twice as fast as bytes.Buffer in both writing and reading

goos: linux
goarch: amd64
pkg: github.com/superwhiskers/crunch/v3
cpu: Intel(R) Core(TM) i5-4300M CPU @ 2.60GHz
BenchmarkBufferWriteBytes-4         612593820            1.948 ns/op           0 B/op          0 allocs/op
BenchmarkBufferReadBytes-4          1000000000           0.5476 ns/op          0 B/op          0 allocs/op
BenchmarkBufferWriteU32LE-4         125229171            9.528 ns/op           0 B/op          0 allocs/op
BenchmarkBufferReadU32LE-4          44677784            24.73 ns/op        8 B/op          1 allocs/op
BenchmarkBufferReadBit-4            1000000000           0.5709 ns/op          0 B/op          0 allocs/op
BenchmarkBufferReadBits-4           620840577            1.869 ns/op           0 B/op          0 allocs/op
BenchmarkBufferSetBit-4             600202990            1.929 ns/op           0 B/op          0 allocs/op
BenchmarkBufferClearBit-4           625814206            1.993 ns/op           0 B/op          0 allocs/op
BenchmarkBufferGrow-4               252735192            6.638 ns/op           0 B/op          0 allocs/op
BenchmarkMiniBufferWriteBytes-4     577940112            2.112 ns/op           0 B/op          0 allocs/op
BenchmarkMiniBufferReadBytes-4      1000000000           0.5531 ns/op          0 B/op          0 allocs/op
BenchmarkMiniBufferWriteU32LE-4     116178949           12.90 ns/op        0 B/op          0 allocs/op
BenchmarkMiniBufferReadU32LE-4      189681555            6.296 ns/op           0 B/op          0 allocs/op
BenchmarkMiniBufferWriteF32LE-4     121033429           13.06 ns/op        0 B/op          0 allocs/op
BenchmarkMiniBufferReadF32LE-4      170977377            7.244 ns/op           0 B/op          0 allocs/op
BenchmarkMiniBufferReadBit-4        1000000000           0.4730 ns/op          0 B/op          0 allocs/op
BenchmarkMiniBufferReadBits-4       249350655            4.968 ns/op           0 B/op          0 allocs/op
BenchmarkMiniBufferSetBit-4         566985802            2.173 ns/op           0 B/op          0 allocs/op
BenchmarkMiniBufferClearBit-4       531134203            2.195 ns/op           0 B/op          0 allocs/op
BenchmarkMiniBufferGrow-4           271458589            4.434 ns/op           0 B/op          0 allocs/op
BenchmarkStdByteBufferWrite-4       127322588            9.249 ns/op           0 B/op          0 allocs/op
BenchmarkStdByteBufferRead-4        319744824            3.742 ns/op           0 B/op          0 allocs/op
BenchmarkStdByteBufferGrow-4        274847331            4.367 ns/op           0 B/op          0 allocs/op

examples

examples can be found in the examples directory

acknowledgements

icon (cookie logo) made by freepik from flaticon.com


*Note that all licence references and agreements mentioned in the crunch README section above are relevant to that project's source code only.