목표
- 대용량 텍스트의 압축 크기와 해제 속도의 수용가능한 절충점 찾기
- multithreading 옵션과 압축 레벨을 이용하지 않고 기본 옵션으로 비교
- 압축 해제 속도만 측정
script
#!/bin/bash
testfile=test.txt
declare -A ext_array=([Z]=compress [gz]=gzip [xz]=xz [lz]=lzip [bz2]=bzip2 [zst]=zstd [lzma]=lzma [lz4]=lz4)
for ext in ${!ext_array[@]}
do
prog=${ext_array[$ext]}
ls -sh $testfile.$ext
time $prog -dc $testfile.$ext > /dev/null
done
samples (1-2GB)
name | size(MB) | time(sec) | name | size(MB) | time(sec) |
---|---|---|---|---|---|
lz4 | 120 | 0.591 | lz4 | 271 | 1.159 |
zstd | 47 | 0.786 | zstd | 132 | 1.850 |
lzma | 26 | 1.638 | lzma | 84 | 4.743 |
xz | 26 | 2.473 | gzip | 152 | 4.820 |
gzip | 67 | 2.694 | xz | 84 | 6.124 |
Lempel-Ziv | 110 | 3.679 | Lempel-Ziv | 192 | 6.258 |
lzip | 27 | 3.932 | lzip | 86 | 9.609 |
bzip2 | 42 | 7.724 | bzip2 | 95 | 16.014 |
결론
속도는 lz4가 가장 빠르지만 압축률이 낮다.
크기와 속도의 절충점으로 zstd나 lzma 정도가 대안이 된다.
xz가 압축률이 가장 좋고 bzip2은 모든 면에서 이점이 없다.