108 lines
3.5 KiB
Plaintext
108 lines
3.5 KiB
Plaintext
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 %)
|