README 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. The Snappy compression format in the Go programming language.
  2. To download and install from source:
  3. $ go get github.com/golang/snappy
  4. Unless otherwise noted, the Snappy-Go source files are distributed
  5. under the BSD-style license found in the LICENSE file.
  6. Benchmarks.
  7. The golang/snappy benchmarks include compressing (Z) and decompressing (U) ten
  8. or so files, the same set used by the C++ Snappy code (github.com/google/snappy
  9. and note the "google", not "golang"). On an "Intel(R) Core(TM) i7-3770 CPU @
  10. 3.40GHz", Go's GOARCH=amd64 numbers as of 2016-05-29:
  11. "go test -test.bench=."
  12. _UFlat0-8 2.19GB/s ± 0% html
  13. _UFlat1-8 1.41GB/s ± 0% urls
  14. _UFlat2-8 23.5GB/s ± 2% jpg
  15. _UFlat3-8 1.91GB/s ± 0% jpg_200
  16. _UFlat4-8 14.0GB/s ± 1% pdf
  17. _UFlat5-8 1.97GB/s ± 0% html4
  18. _UFlat6-8 814MB/s ± 0% txt1
  19. _UFlat7-8 785MB/s ± 0% txt2
  20. _UFlat8-8 857MB/s ± 0% txt3
  21. _UFlat9-8 719MB/s ± 1% txt4
  22. _UFlat10-8 2.84GB/s ± 0% pb
  23. _UFlat11-8 1.05GB/s ± 0% gaviota
  24. _ZFlat0-8 1.04GB/s ± 0% html
  25. _ZFlat1-8 534MB/s ± 0% urls
  26. _ZFlat2-8 15.7GB/s ± 1% jpg
  27. _ZFlat3-8 740MB/s ± 3% jpg_200
  28. _ZFlat4-8 9.20GB/s ± 1% pdf
  29. _ZFlat5-8 991MB/s ± 0% html4
  30. _ZFlat6-8 379MB/s ± 0% txt1
  31. _ZFlat7-8 352MB/s ± 0% txt2
  32. _ZFlat8-8 396MB/s ± 1% txt3
  33. _ZFlat9-8 327MB/s ± 1% txt4
  34. _ZFlat10-8 1.33GB/s ± 1% pb
  35. _ZFlat11-8 605MB/s ± 1% gaviota
  36. "go test -test.bench=. -tags=noasm"
  37. _UFlat0-8 621MB/s ± 2% html
  38. _UFlat1-8 494MB/s ± 1% urls
  39. _UFlat2-8 23.2GB/s ± 1% jpg
  40. _UFlat3-8 1.12GB/s ± 1% jpg_200
  41. _UFlat4-8 4.35GB/s ± 1% pdf
  42. _UFlat5-8 609MB/s ± 0% html4
  43. _UFlat6-8 296MB/s ± 0% txt1
  44. _UFlat7-8 288MB/s ± 0% txt2
  45. _UFlat8-8 309MB/s ± 1% txt3
  46. _UFlat9-8 280MB/s ± 1% txt4
  47. _UFlat10-8 753MB/s ± 0% pb
  48. _UFlat11-8 400MB/s ± 0% gaviota
  49. _ZFlat0-8 409MB/s ± 1% html
  50. _ZFlat1-8 250MB/s ± 1% urls
  51. _ZFlat2-8 12.3GB/s ± 1% jpg
  52. _ZFlat3-8 132MB/s ± 0% jpg_200
  53. _ZFlat4-8 2.92GB/s ± 0% pdf
  54. _ZFlat5-8 405MB/s ± 1% html4
  55. _ZFlat6-8 179MB/s ± 1% txt1
  56. _ZFlat7-8 170MB/s ± 1% txt2
  57. _ZFlat8-8 189MB/s ± 1% txt3
  58. _ZFlat9-8 164MB/s ± 1% txt4
  59. _ZFlat10-8 479MB/s ± 1% pb
  60. _ZFlat11-8 270MB/s ± 1% gaviota
  61. For comparison (Go's encoded output is byte-for-byte identical to C++'s), here
  62. are the numbers from C++ Snappy's
  63. make CXXFLAGS="-O2 -DNDEBUG -g" clean snappy_unittest.log && cat snappy_unittest.log
  64. BM_UFlat/0 2.4GB/s html
  65. BM_UFlat/1 1.4GB/s urls
  66. BM_UFlat/2 21.8GB/s jpg
  67. BM_UFlat/3 1.5GB/s jpg_200
  68. BM_UFlat/4 13.3GB/s pdf
  69. BM_UFlat/5 2.1GB/s html4
  70. BM_UFlat/6 1.0GB/s txt1
  71. BM_UFlat/7 959.4MB/s txt2
  72. BM_UFlat/8 1.0GB/s txt3
  73. BM_UFlat/9 864.5MB/s txt4
  74. BM_UFlat/10 2.9GB/s pb
  75. BM_UFlat/11 1.2GB/s gaviota
  76. BM_ZFlat/0 944.3MB/s html (22.31 %)
  77. BM_ZFlat/1 501.6MB/s urls (47.78 %)
  78. BM_ZFlat/2 14.3GB/s jpg (99.95 %)
  79. BM_ZFlat/3 538.3MB/s jpg_200 (73.00 %)
  80. BM_ZFlat/4 8.3GB/s pdf (83.30 %)
  81. BM_ZFlat/5 903.5MB/s html4 (22.52 %)
  82. BM_ZFlat/6 336.0MB/s txt1 (57.88 %)
  83. BM_ZFlat/7 312.3MB/s txt2 (61.91 %)
  84. BM_ZFlat/8 353.1MB/s txt3 (54.99 %)
  85. BM_ZFlat/9 289.9MB/s txt4 (66.26 %)
  86. BM_ZFlat/10 1.2GB/s pb (19.68 %)
  87. BM_ZFlat/11 527.4MB/s gaviota (37.72 %)