几种压缩算法的压缩和速度比较

几种压缩算法的压缩和速度比较

Quick Benchmark: Gzip vs Bzip2 vs LZMA vs XZ vs LZ4 vs LZO

EDIT: Add zstd

Contents

[hide]

1 Selected archives2 Test conditions3 The file test results

3.1 Compressed file size in bytes3.2 Compression ratio3.3 Compression time3.4 Decompression time3.5 Memory requirements on compression3.6 Memory requirements on decompression4 Stream test

4.1 Time to compress4.2 Time to decompress4.3 Memory used4.4 Compression ratio

4.4.1 With the benchmark application5 Graphics6 Quick benchmark on ARM64

Selected archives

I have selected:

Source of the kernel to test source compressionStream protocol with flush

Test conditions

Tests were run on a desktop:

Intel Core i5 CPU 750 at 2.67GHz8GB of DDR3 memorytmpfs as ram disk is usedLinux kernel 3.3.2, gentoo amd64CFLAGS: -pipe -O2 -g -floop-block -floop-interchange -fgraphitebzip2-1.0.6-r3, xz-utils-5.0.3, gzip-1.4

Only normal mode will be tested firstly.

The file test results

Note: The first column with numbers 1..9 indicates the compression setting passed to gzip, bzip2 and lzmash (e.g. "gzip -9").

Tarball mode from linux-3.3, original size: 466083840 (445M)

Compressed file size in bytes

gzipbzip2lzmalzma -exzxz -elz4lzop gzipbzip2lzmalzma -exzxz -elz4lzop1124875819 (120M)93997047 (90M)85618192 (82M)72042179 (69M)85630688 (82M)72069084 (69M)165844264 (159M)168012430 (161M)2119040249 (114M)87741348 (84M)81480824 (78M)70264395 (68M)81492504 (78M)70282944 (68M)165844264 (159M)166987891 (160M)3114931686 (110M)84816957 (81MB)79575087 (76MB)69015118 (66MB)79586568 (76MB)69029204 (66MB)165844264 (159M)166987891 (160M)5102328357 (98M)81837328 (79M)69557610 (67M)67879362 (65M)69583428 (67M)67875988 (65M)-166987891 (160M)7100128597 (96M)80197758 (77M)67276420 (65M)66868212 (64M)67294092 (65M)66852780 (64M)-116205578 (111M)999740486 (96M)78963640 (76M)65841213 (63M)65362226 (63M)65859432 (63M)65372696 (63M)-114824102 (110M)

Compression ratio

gzipbzip2lzmalzma -exzxz -elz4lzop gzipbzip2lzmalzma -exzxz -elz4lzop126.8%20.2%18.4%15.5%18.4%15.5%35.6%36.0%225.5%18.8%17.5%15.1%17.5%15.1%35.6%35.8%324.7%18.2%17.1%14.8%17.1%14.8%35.6%35.8%522.0%17.6%14.9%14.6%14.9%14.6%-35.8%721.5%17.2%14.4%14.3%14.4%14.3%-24.9%921.4%16.9%14.1%14.0%14.1%14.0%-24.6%

Compression time

gzipbzip2lzmalzma -exzxz -elz4lzop gzipbzip2lzmalzma -exzxz -elz4lzop18.1s58.3s31.7s4m37s32.2s4m40s1.3s1.6s28.5s58.4s40.7s4m49s41.9s4m53s1.4s1.6s39.6s59.1s1m2s4m36s1m1s4m39s1.3s1.5s514s1m1s3m5s5m3m6s4m53s-1.5s721s1m2s4m14s5m52s4m13s5m57s-35s933s1m3s4m48s6m40s4m51s6m40s-1m5s

gzip -1 vs lz4 -1 on x86: lz4 6.2x more fastgzip -1 vs lz4 -1 on ARM: lz4 3.6x more fast

Decompression time

gzipbzip2lzmalzma -exzxz -elz4lzop gzipbzip2lzmalzma -exzxz -elz4lzop13.5s3.4s6.7s5.9s7.2s6.5s0.4s1.5s23s15.76.3s5.6s6.8s6.3s0.3s1.4s33.2s15.9s6s5.6s6.7s6.2s0.4s1.4s53.2s16s5.5s5.4s6.2s6s-1.5s73s15s5.3s5.3s5.9s5.8s-1.3s93s15s5s5.1s5.6s5.6s-1.2s

Memory requirements on compression

gzipbzip2lzmalzma -exzxz -elz4lzop gzipbzip2lzmalzma -exzxz -elz4lzop10.4MB1.1MB8.3MB12.6MB8.3MB12.5MB12MB0.7MB20.4MB1.9MB15.8MB24MB15.8MB24MB12MB0.7MB30.4MB2.7MB30.7MB46.9MB30.8MB47M13.2MB0.7MB50.4MB4.2MB93MB93MB93MB93MB-0.7MB70.4MB5.7MB185MB185MB185MB185MB-0.9MB90.4MB7.2MB672MB673MB673MB673MB-0.9MB

Note: lz4 it's the program using this size, the code for internal lz4 use very less memory

Memory requirements on decompression

gzipbzip2lzmalzma -exzxz -elz4lzop gzipbzip2lzmalzma -exzxz -elz4lzop10.1MB0.3MB1MB1MB1MB1MB13MB0.2MB20.1MB0.9MB2.1MB2.1MB2.1MB2.1MB12MB0.2MB30.1MB1.1MB4.1MB4.1MB4.0MB4.0MB13MB0.2MB50.1MB1.9MB8.1MB8.1MB8.1MB8.1MB-0.2MB70.1MB2.6MB16MB16MB16MB16MB-0.2MB90.1MB3.4MB64MB64MB64MB64MB-0.2MB

Note: lz4 it's the program using this size, the code for internal lz4 use very less memory

Cli used for -1 compression:

time gzip -1 linux-3.3.tar;du -ksh linux-3.3.tar*;ls -l linux-3.3.tar*;time gunzip linux-3.3.tar*time bzip2 -1 linux-3.3.tar;du -ksh linux-3.3.tar*;ls -l linux-3.3.tar*;time bunzip2 linux-3.3.tar.bz2time lzma -1 linux-3.3.tar;du -ksh linux-3.3.tar*;ls -l linux-3.3.tar*;read PAUSe;time unlzma linux-3.3.tar*time lzma -e -1 linux-3.3.tar;du -ksh linux-3.3.tar*;ls -l linux-3.3.tar*;read PAUSe;time unlzma linux-3.3.tar*time xz -1 linux-3.3.tar;du -ksh linux-3.3.tar*;ls -l linux-3.3.tar*;read PAUSe;time unxz linux-3.3.tar*time xz -e -1 linux-3.3.tar;du -ksh linux-3.3.tar*;ls -l linux-3.3.tar*;read PAUSe;time unxz linux-3.3.tar*time /home/user/lz4-read-only/lz4demo64 -c0 linux-3.3.tar linux-3.3.tar.lz4;du -ksh linux-3.3.tar*;ls -l linux-3.3.tar*;read PAUSe;time /home/user/lz4-read-only/lz4demo64 -d linux-3.3.tar.lz4 linux-3.3.tar;rm linux-3.3.tar.*time lzop -1 linux-3.3.tar;rm linux-3.3.tar;du -ksh linux-3.3.tar*;ls -l linux-3.3.tar*;read PAUSe;time lzop -d linux-3.3.tar*;rm linux-3.3.tar.*

Stream test

Time to compress

gzipzliblz4lz4hcnone gzipzliblz4lz4hcnone1376368130311102371391 3378362 5390392 7389387 9393384

Time to decompress

gzipzliblz4lz4hcnone gzipzliblz4lz4hcnone1179717788097969218411831 317711780 518061960 718611851 918351806

Messured with:

timespec tstart,tstop;

clock_gettime(CLOCK_REALTIME, &tstart);

//compression/decompression

clock_gettime(CLOCK_REALTIME, &tstop);

compressionTime+=((quint64)tstop.tv_sec * 1000000LL + (quint64)tstop.tv_nsec / 1000LL)-((quint64)tstart.tv_sec * 1000000LL + (quint64)tstart.tv_nsec / 1000LL);

Memory used

gzipzliblz4lz4hcnonegzipzliblz4lz4hcnone0.5MB0.5MB0MB0MB0MB

The socket is always used as full duplex, then it's compression + decompression memory.

Compression ratio

It's transferred size/raw size (lower is better)

With the benchmark application

Uploaded at: https://github.com/alphaonex86/debug-devel/tree/master/QTcpCompressionBenchmark

gzipzliblz4lz4hcnonegzipzliblz4lz4hcnone0.990.971.591.591

The most over-head of small packet (3Bytes) is drop by high compression with zlib/gzip for the big packet.

Graphics

Quick benchmark on ARM64

A quick benchmark on ARM64 (odroid, Cortex A53), on kernel Image (12MB), use default compression level (-6) because no way to configure the compression level of btrfs

The speed is on compressed stream, mean the hdd.

xzgziplz4zstdSize4.2M5.5M7.8M5.8MCompression speed0.2 MB/s1.8 MB/s21.4 MB/s2.8 MB/sDecompression speed4.8 MB/s13.6 MB/s48.4 MB/s19.1 MB/s

相关资讯

麻子啥意思(方言麻子是什么意思)
www365betcom手机版

麻子啥意思(方言麻子是什么意思)

⌚ 07-18 👁️ 1575
2014世界杯花费 2014世界杯多少支球队参赛
体育365网投

2014世界杯花费 2014世界杯多少支球队参赛

⌚ 07-15 👁️ 3502
怎么摇手机频率最快
beat365在线平台网址

怎么摇手机频率最快

⌚ 07-04 👁️ 4510