The Snappy compression format in the Go programming language.

To download and install from source:
$ go get github.com/golang/snappy

Unless otherwise noted, the Snappy-Go source files are distributed
under the BSD-style license found in the LICENSE file.



Benchmarks.

The golang/snappy benchmarks include compressing (Z) and decompressing (U) ten
or so files, the same set used by the C++ Snappy code (github.com/google/snappy
and note the "google", not "golang"). On an "Intel(R) Core(TM) i7-3770 CPU @
3.40GHz", Go's GOARCH=amd64 numbers as of 2016-04-29:

"go test -test.bench=."

_UFlat0-8         2.23GB/s ± 1%  html
_UFlat1-8         1.43GB/s ± 0%  urls
_UFlat2-8         23.7GB/s ± 1%  jpg
_UFlat3-8         1.93GB/s ± 0%  jpg_200
_UFlat4-8         13.9GB/s ± 2%  pdf
_UFlat5-8         2.00GB/s ± 0%  html4
_UFlat6-8          829MB/s ± 0%  txt1
_UFlat7-8          799MB/s ± 0%  txt2
_UFlat8-8          871MB/s ± 0%  txt3
_UFlat9-8          730MB/s ± 0%  txt4
_UFlat10-8        2.87GB/s ± 0%  pb
_UFlat11-8        1.07GB/s ± 0%  gaviota

_ZFlat0-8         1.04GB/s ± 0%  html
_ZFlat1-8          536MB/s ± 0%  urls
_ZFlat2-8         16.3GB/s ± 2%  jpg
_ZFlat3-8          762MB/s ± 0%  jpg_200
_ZFlat4-8         9.48GB/s ± 1%  pdf
_ZFlat5-8          990MB/s ± 0%  html4
_ZFlat6-8          381MB/s ± 0%  txt1
_ZFlat7-8          353MB/s ± 0%  txt2
_ZFlat8-8          398MB/s ± 0%  txt3
_ZFlat9-8          329MB/s ± 0%  txt4
_ZFlat10-8        1.35GB/s ± 1%  pb
_ZFlat11-8         608MB/s ± 0%  gaviota



"go test -test.bench=. -tags=noasm"

_UFlat0-8          637MB/s ± 0%  html
_UFlat1-8          506MB/s ± 0%  urls
_UFlat2-8         23.0GB/s ± 5%  jpg
_UFlat3-8         1.17GB/s ± 0%  jpg_200
_UFlat4-8         4.44GB/s ± 1%  pdf
_UFlat5-8          623MB/s ± 0%  html4
_UFlat6-8          300MB/s ± 1%  txt1
_UFlat7-8          293MB/s ± 0%  txt2
_UFlat8-8          316MB/s ± 0%  txt3
_UFlat9-8          285MB/s ± 0%  txt4
_UFlat10-8         768MB/s ± 0%  pb
_UFlat11-8         406MB/s ± 1%  gaviota

_ZFlat0-8          411MB/s ± 1%  html
_ZFlat1-8          250MB/s ± 1%  urls
_ZFlat2-8         12.7GB/s ± 1%  jpg
_ZFlat3-8          157MB/s ± 0%  jpg_200
_ZFlat4-8         2.95GB/s ± 0%  pdf
_ZFlat5-8          406MB/s ± 0%  html4
_ZFlat6-8          182MB/s ± 0%  txt1
_ZFlat7-8          173MB/s ± 1%  txt2
_ZFlat8-8          191MB/s ± 0%  txt3
_ZFlat9-8          166MB/s ± 0%  txt4
_ZFlat10-8         480MB/s ± 0%  pb
_ZFlat11-8         272MB/s ± 0%  gaviota



For comparison (Go's encoded output is byte-for-byte identical to C++'s), here
are the numbers from C++ Snappy's

make CXXFLAGS="-O2 -DNDEBUG -g" clean snappy_unittest.log && cat snappy_unittest.log

BM_UFlat/0     2.4GB/s  html
BM_UFlat/1     1.4GB/s  urls
BM_UFlat/2    21.8GB/s  jpg
BM_UFlat/3     1.5GB/s  jpg_200
BM_UFlat/4    13.3GB/s  pdf
BM_UFlat/5     2.1GB/s  html4
BM_UFlat/6     1.0GB/s  txt1
BM_UFlat/7   959.4MB/s  txt2
BM_UFlat/8     1.0GB/s  txt3
BM_UFlat/9   864.5MB/s  txt4
BM_UFlat/10    2.9GB/s  pb
BM_UFlat/11    1.2GB/s  gaviota

BM_ZFlat/0   944.3MB/s  html (22.31 %)
BM_ZFlat/1   501.6MB/s  urls (47.78 %)
BM_ZFlat/2    14.3GB/s  jpg (99.95 %)
BM_ZFlat/3   538.3MB/s  jpg_200 (73.00 %)
BM_ZFlat/4     8.3GB/s  pdf (83.30 %)
BM_ZFlat/5   903.5MB/s  html4 (22.52 %)
BM_ZFlat/6   336.0MB/s  txt1 (57.88 %)
BM_ZFlat/7   312.3MB/s  txt2 (61.91 %)
BM_ZFlat/8   353.1MB/s  txt3 (54.99 %)
BM_ZFlat/9   289.9MB/s  txt4 (66.26 %)
BM_ZFlat/10    1.2GB/s  pb (19.68 %)
BM_ZFlat/11  527.4MB/s  gaviota (37.72 %)
