優化的壓縮包:compress

jopen 9年前發布 | 37K 次閱讀 compress 常用工具包

這個包基于一個優化過的緊縮(Deflate)功能,是gzip/zip/zlib使用的包。

It offers slightly better compression at lower compression settings, and up to 3x faster encoding at highest compression level.

usage

The packages are drop-in replacements for standard libraries. Simply replace the import path to use them:

old import new import
compress/gzip github.com/klauspost/compress/gzip
compress/zlib github.com/klauspost/compress/zlib
archive/zip github.com/klauspost/compress/zip
compress/deflate github.com/klauspost/compress/deflate

You may also be interested in pgzip, which is a drop in replacement for gzip, which support multithreaded compression on big files and the optimized crc32 package used by these packages.

The packages contains the same as the standard library, so you can use the godoc for that: gzip, zip, zlib, flate.

Currently there is only minor speedup on decompression (primarily CRC32 calculation).

deflate optimizations

  • Minimum matches are 4 bytes, this leads to fewer searches and better compression.
  • Stronger hash (iSCSI CRC32) for matches on x64 with SSE 4.2 support. This leads to fewer hash collisions.
  • Literal byte matching using SSE 4.2 for faster string comparisons.
  • Bulk hashing on matches.
  • Much faster dictionary indexing withNewWriterDict()/Reset().
  • Make Bit Coder faster by assuming we are on a 64 bit CPU.
BenchmarkEncodeDigitsSpeed1e4        571065        571799        +0.13%
BenchmarkEncodeDigitsSpeed1e5        3680010       4645932       +26.25%
BenchmarkEncodeDigitsSpeed1e6        34667982      45532604      +31.34%
BenchmarkEncodeDigitsDefault1e4      770694        619535        -19.61%
BenchmarkEncodeDigitsDefault1e5      13682782      6032845       -55.91%
BenchmarkEncodeDigitsDefault1e6      152778738     61443514      -59.78%
BenchmarkEncodeDigitsCompress1e4     771094        620635        -19.51%
BenchmarkEncodeDigitsCompress1e5     13683782      5999343       -56.16%
BenchmarkEncodeDigitsCompress1e6     152648731     61228502      -59.89%
BenchmarkEncodeTwainSpeed1e4         595100        570165        -4.19%
BenchmarkEncodeTwainSpeed1e5         3432796       3376593       -1.64%
BenchmarkEncodeTwainSpeed1e6         31573806      30687755      -2.81%
BenchmarkEncodeTwainDefault1e4       828697        674388        -18.62%
BenchmarkEncodeTwainDefault1e5       11572161      6733885       -41.81%
BenchmarkEncodeTwainDefault1e6       122607013     68998946      -43.72%
BenchmarkEncodeTwainCompress1e4      833297        679738        -18.43%
BenchmarkEncodeTwainCompress1e5      14539831      7372921       -49.29%
BenchmarkEncodeTwainCompress1e6      160019152     77099410      -51.82%

benchmark                            old MB/s     new MB/s     speedup
BenchmarkEncodeDigitsSpeed1e4        17.51        17.49        1.00x
BenchmarkEncodeDigitsSpeed1e5        27.17        21.52        0.79x
BenchmarkEncodeDigitsSpeed1e6        28.85        21.96        0.76x
BenchmarkEncodeDigitsDefault1e4      12.98        16.14        1.24x
BenchmarkEncodeDigitsDefault1e5      7.31         16.58        2.27x
BenchmarkEncodeDigitsDefault1e6      6.55         16.28        2.49x
BenchmarkEncodeDigitsCompress1e4     12.97        16.11        1.24x
BenchmarkEncodeDigitsCompress1e5     7.31         16.67        2.28x
BenchmarkEncodeDigitsCompress1e6     6.55         16.33        2.49x
BenchmarkEncodeTwainSpeed1e4         16.80        17.54        1.04x
BenchmarkEncodeTwainSpeed1e5         29.13        29.62        1.02x
BenchmarkEncodeTwainSpeed1e6         31.67        32.59        1.03x
BenchmarkEncodeTwainDefault1e4       12.07        14.83        1.23x
BenchmarkEncodeTwainDefault1e5       8.64         14.85        1.72x
BenchmarkEncodeTwainDefault1e6       8.16         14.49        1.78x
BenchmarkEncodeTwainCompress1e4      12.00        14.71        1.23x
BenchmarkEncodeTwainCompress1e5      6.88         13.56        1.97x
BenchmarkEncodeTwainCompress1e6      6.25         12.97        2.08x
  • "Speed" is compression level 1
  • "Default" is compression level 6
  • "Compress" is compression level 9
  • Test files are Digits (no matches) and Twain (plain text) .

As can be seen speed on low-matching soucesDigitsare a tiny bit slower at compression level 1, but for default compression it shows a very good speedup.


項目主頁:http://www.baiduhome.net/lib/view/home/1438160460894

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!