博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
miniz compared to other real-time and high-ratio compressors
阅读量:2436 次
发布时间:2019-05-10

本文共 18098 字,大约阅读时间需要 60 分钟。

Introduction

This page shows how miniz.c v1.10 compares to several other popular open source lossless data compression codecs at compression level 9 (max compression), with two examples at level 1 (fastest compression) on enwik8 and enwik9. The data here was generated using a slightly modified and enhanced version of   project, compiled to x64.

On a Core i7 3.2 GHz, miniz.c's typical decompression rate is around 175-250 MB/sec., and its typical compression rate is anywhere from 14-120.5MB/s (actual rates depend on the compression level, as well as the compressibility and redundancy present in the source data). The x64 version of the decompressor is faster than the x86 version, sometimes up to 20%, mostly due to good register utilization. miniz.c's inflater can be optionally configured to use a 64-bit bitbuffer on 64-bit CPU's, and unaligned 16 and 32-bit loads on little endian platforms (the tests below had both optimizations enabled).

For comparison purposes, I've added 's Inflater implementation to compresssiontest, and  alpha7. Note that miniz.c is used for compressing the data supplied to stb_image.c for decompression (stb_image.c does not include a compressor,  contains a simple compressor but I haven't tested it yet). Also, stb_image.c does not compute an  checksum of the uncompressed data, and miniz.c and zlib do, so stb's actual "apples to apples" performance is a little lower than reported here. (Approximately 10% of miniz.c's decompression time is spent computing the Adler32 checksum. Note, stb_image.c is extremely useful and it inspired miniz.c -- I'm only using it as a point of reference to help compare alternate Inflate implementations against zlib.)

Test machine: Win7 Ultimate x64, Intel Gulftown Core i7 3.2GHz (6 cores, 12 hyperthreads), 24GB of RAM, EVGA X58 motherboard. All code was compiled with Visual Studio 2005.

LZHAM and LZMA where both set to use 512MB dictionary sizes in these tests.

File:  (miniz.c compression level 9):

E:\lzham\compressiontest\test_compression>test_compression_x64.exe E:\dev\corpus\enwik8\enwik8x64 versionReading test file 'E:\dev\corpus\enwik8\enwik8' which is 100,000,000 bytes long.---------------------------------------------------------------Testing Compression rate and speed with various compressors.---------------------------------------------------------------Compress:CT_STB     :FROM:100,000,000 TO: 36,460,117 63.54%    5,871 MSCompress:CT_MINIZ   :FROM:100,000,000 TO: 36,460,117 63.54%    5,872 MSCompress:CT_CRYPTO  :FROM:100,000,000 TO: 36,642,772 63.36%    7,501 MSCompress:CT_MINILZO :FROM:100,000,000 TO: 53,481,960 46.52%      868 MSCompress:CT_ZLIB    :FROM:100,000,000 TO: 36,475,808 63.52%    7,635 MSCompress:CT_BZIP    :FROM:100,000,000 TO: 33,259,584 66.74%    9,444 MSCompress:CT_LIBLZF  :FROM:100,000,000 TO: 53,945,398 46.05%      688 MSCompress:CT_LZMA    :FROM:100,000,000 TO: 24,797,518 75.20%   86,542 MSCompress:CT_FASTLZ  :FROM:100,000,000 TO: 54,163,029 45.84%      738 MSCompress:CT_LZHAM   :FROM:100,000,000 TO: 24,814,835 75.19%   29,200 MS---------------------------------------------------------------Testing Decompression speed with various decompressors.---------------------------------------------------------------Decompress:CT_STB     :FROM: 36,460,117 TO:100,000,000      731 MSDecompress:CT_MINIZ   :FROM: 36,460,117 TO:100,000,000      559 MSDecompress:CT_CRYPTO  :FROM: 36,642,772 TO:100,000,000    1,823 MSDecompress:CT_MINILZO :FROM: 53,481,960 TO:100,000,000      463 MSDecompress:CT_ZLIB    :FROM: 36,475,808 TO:100,000,000      570 MSDecompress:CT_BZIP    :FROM: 33,259,584 TO:100,000,000    3,587 MSDecompress:CT_LIBLZF  :FROM: 53,945,398 TO:100,000,000      429 MSDecompress:CT_LZMA    :FROM: 24,797,518 TO:100,000,000    1,492 MSDecompress:CT_FASTLZ  :FROM: 54,163,029 TO:100,000,000      458 MSDecompress:CT_LZHAM   :FROM: 24,814,835 TO:100,000,000      848 MS

File:  (miniz.c compression level 1 (MZ_BEST_SPEED), zlib set to Z_BEST_SPEED, all other settings are the same as above):

E:\lzham\compressiontest\test_compression>test_compression_x64.exe E:\dev\corpus\enwik8\enwik8x64 versionReading test file 'E:\dev\corpus\enwik8\enwik8' which is 100,000,000 bytes long.---------------------------------------------------------------Testing Compression rate and speed with various compressors.---------------------------------------------------------------Compress:CT_STB     :FROM:100,000,000 TO: 48,510,044 51.49%    1,159 MSCompress:CT_MINIZ   :FROM:100,000,000 TO: 48,510,044 51.49%    1,158 MSCompress:CT_CRYPTO  :FROM:100,000,000 TO: 36,642,772 63.36%    7,501 MSCompress:CT_MINILZO :FROM:100,000,000 TO: 53,481,960 46.52%      868 MSCompress:CT_ZLIB    :FROM:100,000,000 TO: 42,298,790 57.70%    2,443 MSCompress:CT_BZIP    :FROM:100,000,000 TO: 33,259,584 66.74%    9,431 MSCompress:CT_LIBLZF  :FROM:100,000,000 TO: 53,945,398 46.05%      685 MSCompress:CT_LZMA    :FROM:100,000,000 TO: 24,797,518 75.20%   86,736 MSCompress:CT_FASTLZ  :FROM:100,000,000 TO: 54,163,029 45.84%      739 MSCompress:CT_LZHAM   :FROM:100,000,000 TO: 24,813,424 75.19%   29,210 MS---------------------------------------------------------------Testing Decompression speed with various decompressors.---------------------------------------------------------------Decompress:CT_STB     :FROM: 48,510,044 TO:100,000,000      987 MSDecompress:CT_MINIZ   :FROM: 48,510,044 TO:100,000,000      718 MSDecompress:CT_CRYPTO  :FROM: 36,642,772 TO:100,000,000    1,823 MSDecompress:CT_MINILZO :FROM: 53,481,960 TO:100,000,000      463 MSDecompress:CT_ZLIB    :FROM: 42,298,790 TO:100,000,000      612 MSDecompress:CT_BZIP    :FROM: 33,259,584 TO:100,000,000    3,563 MSDecompress:CT_LIBLZF  :FROM: 53,945,398 TO:100,000,000      429 MSDecompress:CT_LZMA    :FROM: 24,797,518 TO:100,000,000    1,497 MSDecompress:CT_FASTLZ  :FROM: 54,163,029 TO:100,000,000      458 MSDecompress:CT_LZHAM   :FROM: 24,813,424 TO:100,000,000      853 MS

File:  (miniz.c compression level 9):

E:\lzham\compressiontest\test_compression>test_compression_x64.exe E:\dev\corpus\enwik9\enwik9x64 versionReading test file 'E:\dev\corpus\enwik9\enwik9' which is 1,000,000,000 bytes long.---------------------------------------------------------------Testing Compression rate and speed with various compressors.---------------------------------------------------------------Compress:CT_STB     :FROM:1,000,000,000 TO:322,771,589 67.72%   50,859 MSCompress:CT_MINIZ   :FROM:1,000,000,000 TO:322,771,589 67.72%   50,869 MSCompress:CT_CRYPTO  :FROM:1,000,000,000 TO:324,897,277 67.51%   65,744 MSCompress:CT_MINILZO :FROM:1,000,000,000 TO:477,237,740 52.28%    7,807 MSCompress:CT_ZLIB    :FROM:1,000,000,000 TO:322,789,246 67.72%   66,571 MSCompress:CT_BZIP    :FROM:1,000,000,000 TO:295,663,950 70.43%   94,037 MSCompress:CT_LIBLZF  :FROM:1,000,000,000 TO:492,987,206 50.70%    6,310 MSCompress:CT_LZMA    :FROM:1,000,000,000 TO:201,776,574 79.82% 1,043,293 MSCompress:CT_FASTLZ  :FROM:1,000,000,000 TO:487,260,768 51.27%    6,748 MSCompress:CT_LZHAM   :FROM:1,000,000,000 TO:202,475,460 79.75%  351,687 MS---------------------------------------------------------------Testing Decompression speed with various decompressors.---------------------------------------------------------------Decompress:CT_STB     :FROM:322,771,589 TO:1,000,000,000    6,717 MSDecompress:CT_MINIZ   :FROM:322,771,589 TO:1,000,000,000    5,050 MSDecompress:CT_CRYPTO  :FROM:324,897,277 TO:1,000,000,000   16,770 MSDecompress:CT_MINILZO :FROM:477,237,740 TO:1,000,000,000    4,205 MSDecompress:CT_ZLIB    :FROM:322,789,246 TO:1,000,000,000    5,171 MSDecompress:CT_BZIP    :FROM:295,663,950 TO:1,000,000,000   33,298 MSDecompress:CT_LIBLZF  :FROM:492,987,206 TO:1,000,000,000    4,025 MSDecompress:CT_LZMA    :FROM:201,776,574 TO:1,000,000,000   12,650 MSDecompress:CT_FASTLZ  :FROM:487,260,768 TO:1,000,000,000    4,223 MSDecompress:CT_LZHAM   :FROM:202,475,460 TO:1,000,000,000    7,444 MS

File:  (miniz.c compression level 1 (MZ_BEST_SPEED), zlib set to Z_BEST_SPEED, all other settings are the same as above):

E:\lzham\compressiontest\test_compression>test_compression_x64.exe E:\dev\corpus\enwik9\enwik9x64 versionReading test file 'E:\dev\corpus\enwik9\enwik9' which is 1,000,000,000 bytes long.---------------------------------------------------------------Testing Compression rate and speed with various compressors.---------------------------------------------------------------Compress:CT_STB     :FROM:1,000,000,000 TO:436,564,069 56.34%   10,417 MSCompress:CT_MINIZ   :FROM:1,000,000,000 TO:436,564,069 56.34%   10,418 MSCompress:CT_CRYPTO  :FROM:1,000,000,000 TO:324,897,277 67.51%   66,169 MSCompress:CT_MINILZO :FROM:1,000,000,000 TO:477,237,740 52.28%    7,769 MSCompress:CT_ZLIB    :FROM:1,000,000,000 TO:378,355,092 62.16%   21,900 MSCompress:CT_BZIP    :FROM:1,000,000,000 TO:295,663,950 70.43%   93,694 MSCompress:CT_LIBLZF  :FROM:1,000,000,000 TO:492,987,206 50.70%    6,326 MSCompress:CT_LZMA    :FROM:1,000,000,000 TO:201,776,574 79.82% 1,043,293 MSCompress:CT_FASTLZ  :FROM:1,000,000,000 TO:487,260,768 51.27%    6,756 MSCompress:CT_LZHAM   :FROM:1,000,000,000 TO:202,475,460 79.75%  351,687 MS---------------------------------------------------------------Testing Decompression speed with various decompressors.---------------------------------------------------------------Decompress:CT_STB     :FROM:436,564,069 TO:1,000,000,000    9,010 MSDecompress:CT_MINIZ   :FROM:436,564,069 TO:1,000,000,000    6,530 MSDecompress:CT_CRYPTO  :FROM:324,897,277 TO:1,000,000,000   16,786 MSDecompress:CT_MINILZO :FROM:477,237,740 TO:1,000,000,000    4,205 MSDecompress:CT_ZLIB    :FROM:378,355,092 TO:1,000,000,000    5,612 MSDecompress:CT_BZIP    :FROM:295,663,950 TO:1,000,000,000   33,340 MSDecompress:CT_LIBLZF  :FROM:492,987,206 TO:1,000,000,000    3,977 MSDecompress:CT_LZMA    :FROM:201,776,574 TO:1,000,000,000   12,650 MSDecompress:CT_FASTLZ  :FROM:487,260,768 TO:1,000,000,000    4,214 MSDecompress:CT_LZHAM   :FROM:202,475,460 TO:1,000,000,000    7,444 MS

File: Entire Large  added to a single uncompressed 7zip archive (miniz.c compression level 9):

E:\lzham\compressiontest\test_compression>test_compression_x64.exe e:\dev\corpus\calgary_corpus.7zx64 versionReading test file 'e:\dev\corpus\calgary_corpus.7z' which is 3,251,898 bytes long.---------------------------------------------------------------Testing Compression rate and speed with various compressors.---------------------------------------------------------------Compress:CT_STB     :FROM:  3,251,898 TO:  1,065,470 67.24%      224 MSCompress:CT_MINIZ   :FROM:  3,251,898 TO:  1,065,470 67.24%      224 MSCompress:CT_CRYPTO  :FROM:  3,251,898 TO:  1,067,241 67.18%      240 MSCompress:CT_MINILZO :FROM:  3,251,898 TO:  1,581,684 51.36%       26 MSCompress:CT_ZLIB    :FROM:  3,251,898 TO:  1,059,243 67.43%      353 MSCompress:CT_BZIP    :FROM:  3,251,898 TO:    961,353 70.44%      277 MSCompress:CT_LIBLZF  :FROM:  3,251,898 TO:  1,593,245 51.01%       20 MSCompress:CT_LZMA    :FROM:  3,251,898 TO:    853,241 73.76%    1,570 MSCompress:CT_FASTLZ  :FROM:  3,251,898 TO:  1,606,374 50.60%       21 MSCompress:CT_LZHAM   :FROM:  3,251,898 TO:    893,578 72.52%    1,028 MS---------------------------------------------------------------Testing Decompression speed with various decompressors.---------------------------------------------------------------Decompress:CT_STB     :FROM:  1,065,470 TO:  3,251,898       22 MSDecompress:CT_MINIZ   :FROM:  1,065,470 TO:  3,251,898       17 MSDecompress:CT_CRYPTO  :FROM:  1,067,241 TO:  3,251,898       54 MSDecompress:CT_MINILZO :FROM:  1,581,684 TO:  3,251,898       14 MSDecompress:CT_ZLIB    :FROM:  1,059,243 TO:  3,251,898       17 MSDecompress:CT_BZIP    :FROM:    961,353 TO:  3,251,898      104 MSDecompress:CT_LIBLZF  :FROM:  1,593,245 TO:  3,251,898       13 MSDecompress:CT_LZMA    :FROM:    853,241 TO:  3,251,898       55 MSDecompress:CT_FASTLZ  :FROM:  1,606,374 TO:  3,251,898       13 MSDecompress:CT_LZHAM   :FROM:    893,578 TO:  3,251,898       39 MS

File: "pic" from the Large  (miniz.c compression level 9):

E:\lzham\compressiontest\test_compression>test_compression_x64.exe e:\dev\corpus\large_calgary_corpus\picx64 versionReading test file 'e:\dev\corpus\large_calgary_corpus\pic' which is 513,216 bytes long.---------------------------------------------------------------Testing Compression rate and speed with various compressors.---------------------------------------------------------------Compress:CT_STB     :FROM:    513,216 TO:     53,721 89.53%       26 MSCompress:CT_MINIZ   :FROM:    513,216 TO:     53,721 89.53%       26 MSCompress:CT_CRYPTO  :FROM:    513,216 TO:     57,166 88.86%       18 MSCompress:CT_MINILZO :FROM:    513,216 TO:     86,304 83.18%        2 MSCompress:CT_ZLIB    :FROM:    513,216 TO:     52,237 89.82%       96 MSCompress:CT_BZIP    :FROM:    513,216 TO:     49,928 90.27%       17 MSCompress:CT_LIBLZF  :FROM:    513,216 TO:     80,772 84.26%        1 MSCompress:CT_LZMA    :FROM:    513,216 TO:     41,897 91.84%      367 MSCompress:CT_FASTLZ  :FROM:    513,216 TO:     81,960 84.03%        1 MSCompress:CT_LZHAM   :FROM:    513,216 TO:     47,437 90.76%      515 MS---------------------------------------------------------------Testing Decompression speed with various decompressors.---------------------------------------------------------------Decompress:CT_STB     :FROM:     53,721 TO:    513,216        2 MSDecompress:CT_MINIZ   :FROM:     53,721 TO:    513,216        2 MSDecompress:CT_CRYPTO  :FROM:     57,166 TO:    513,216        4 MSDecompress:CT_MINILZO :FROM:     86,304 TO:    513,216        2 MSDecompress:CT_ZLIB    :FROM:     52,237 TO:    513,216        1 MSDecompress:CT_BZIP    :FROM:     49,928 TO:    513,216        6 MSDecompress:CT_LIBLZF  :FROM:     80,772 TO:    513,216        1 MSDecompress:CT_LZMA    :FROM:     41,897 TO:    513,216        4 MSDecompress:CT_FASTLZ  :FROM:     81,960 TO:    513,216        1 MSDecompress:CT_LZHAM   :FROM:     47,437 TO:    513,216        7 MS

Files: Uncompressed 7zip archive of an Adobe Acrobat Reader 9.0 installation (miniz.c compression level 9):

E:\lzham\compressiontest\test_compression>test_compression_x64.exe e:\dev\corpus\adobe.7zx64 versionReading test file 'e:\dev\corpus\adobe.7z' which is 146,332,683 bytes long.---------------------------------------------------------------Testing Compression rate and speed with various compressors.---------------------------------------------------------------Compress:CT_STB     :FROM:146,332,683 TO: 89,281,876 38.99%    9,780 MSCompress:CT_MINIZ   :FROM:146,332,683 TO: 89,281,876 38.99%    9,781 MSCompress:CT_CRYPTO  :FROM:146,332,683 TO: 91,494,418 37.48%    7,156 MSCompress:CT_MINILZO :FROM:146,332,683 TO:101,687,569 30.51%    1,702 MSCompress:CT_ZLIB    :FROM:146,332,683 TO: 89,166,466 39.07%   13,143 MSCompress:CT_BZIP    :FROM:146,332,683 TO: 89,072,636 39.13%   20,828 MSCompress:CT_LIBLZF  :FROM:146,332,683 TO:106,352,717 27.32%    1,100 MSCompress:CT_LZMA    :FROM:146,332,683 TO: 74,361,137 49.18%   59,076 MSCompress:CT_FASTLZ  :FROM:146,332,683 TO:105,548,437 27.87%    1,032 MSCompress:CT_LZHAM   :FROM:146,332,683 TO: 75,314,840 48.53%   42,354 MS---------------------------------------------------------------Testing Decompression speed with various decompressors.---------------------------------------------------------------Decompress:CT_STB     :FROM: 89,281,876 TO:146,332,683    1,119 MSDecompress:CT_MINIZ   :FROM: 89,281,876 TO:146,332,683      773 MSDecompress:CT_CRYPTO  :FROM: 91,494,418 TO:146,332,683    2,142 MSDecompress:CT_MINILZO :FROM:101,687,569 TO:146,332,683      545 MSDecompress:CT_ZLIB    :FROM: 89,166,466 TO:146,332,683      820 MSDecompress:CT_BZIP    :FROM: 89,072,636 TO:146,332,683    7,101 MSDecompress:CT_LIBLZF  :FROM:106,352,717 TO:146,332,683      565 MSDecompress:CT_LZMA    :FROM: 74,361,137 TO:146,332,683    5,259 MSDecompress:CT_FASTLZ  :FROM:105,548,437 TO:146,332,683      573 MSDecompress:CT_LZHAM   :FROM: 75,314,840 TO:146,332,683    1,761 MS

File: miniz3_v109.zip (a test of how well various codecs handle already compressed data) (miniz.c compression level 9):

E:\lzham\compressiontest\test_compression>test_compression_x64.exe e:\dev\miniz3_v109.zipx64 versionReading test file 'e:\dev\miniz3_v109.zip' which is 417,549 bytes long.---------------------------------------------------------------Testing Compression rate and speed with various compressors.---------------------------------------------------------------Compress:CT_STB     :FROM:    417,549 TO:    416,312 0.30%       17 MSCompress:CT_MINIZ   :FROM:    417,549 TO:    416,312 0.30%       17 MSCompress:CT_CRYPTO  :FROM:    417,549 TO:    417,658 -0.03%        9 MSCompress:CT_MINILZO :FROM:    417,549 TO:    417,760 -0.05%        7 MSCompress:CT_ZLIB    :FROM:    417,549 TO:    416,408 0.27%       18 MSCompress:CT_BZIP    :FROM:    417,549 TO:    420,125 -0.62%       88 MSCompress:CT_LIBLZF  :FROM:    417,549 TO:    429,060 -2.76%        4 MSCompress:CT_LZMA    :FROM:    417,549 TO:    420,196 -0.63%      313 MSCompress:CT_FASTLZ  :FROM:    417,549 TO:    429,044 -2.75%        3 MSCompress:CT_LZHAM   :FROM:    417,549 TO:    417,575 -0.01%       82 MS---------------------------------------------------------------Testing Decompression speed with various decompressors.---------------------------------------------------------------Decompress:CT_STB     :FROM:    416,312 TO:    417,549        2 MSDecompress:CT_MINIZ   :FROM:    416,312 TO:    417,549        1 MSDecompress:CT_CRYPTO  :FROM:    417,658 TO:    417,549        2 MSDecompress:CT_MINILZO :FROM:    417,760 TO:    417,549        1 MSDecompress:CT_ZLIB    :FROM:    416,408 TO:    417,549        2 MSDecompress:CT_BZIP    :FROM:    420,125 TO:    417,549       28 MSDecompress:CT_LIBLZF  :FROM:    429,060 TO:    417,549        2 MSDecompress:CT_LZMA    :FROM:    420,196 TO:    417,549       29 MSDecompress:CT_FASTLZ  :FROM:    429,044 TO:    417,549        1 MSDecompress:CT_LZHAM   :FROM:    417,575 TO:    417,549        2 MS

转载地址:http://thwqb.baihongyu.com/

你可能感兴趣的文章
关于 cleanup stack 和 two phase consturction [1](转)
查看>>
Oracle数据导入导出imp/exp (转)
查看>>
如何构建固定网(PSTN)短消息系统(转)
查看>>
Delphi文件管理(三)(转)
查看>>
关于网线的一些问题的解答(转)
查看>>
深度分析Win 2003自动升级补丁功能(转)
查看>>
使用Carbide.vs与VS.NET2003构建Symbian开发平台-S60 平台(转)
查看>>
来访者地址统计,很好的一个程序!(转)
查看>>
UpdateWindow函数 (转)
查看>>
移动通信的主要测量指标及注意事项(转)
查看>>
无盘网络正确网络配置建议-减少卡机蓝屏关键(转)
查看>>
如何在Delphi中调用oracle的存储过程返回数据集(转)
查看>>
ASP指南:ADO/SQL(数据存取) (转)
查看>>
微软将在HEC上发布Windows 2003 64-bit(转)
查看>>
保护SQL Server数据库的十大绝招(转)
查看>>
百度搜索引擎使用指南(转)
查看>>
专家观点:安全成交换机的基本功能(转)
查看>>
树型结构在ASP中的简单解决(转)
查看>>
解决玩游戏时显卡卡屏现象(转)
查看>>
移动通信概要(转)
查看>>