목표

  • 대용량 텍스트의 압축 크기와 해제 속도의 수용가능한 절충점 찾기
  • 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)

namesize(MB)time(sec)namesize(MB)time(sec)
lz41200.591lz42711.159
zstd470.786zstd1321.850
lzma261.638lzma844.743
xz262.473gzip1524.820
gzip672.694xz846.124
Lempel-Ziv1103.679Lempel-Ziv1926.258
lzip273.932lzip869.609
bzip2427.724bzip29516.014

결론

속도는 lz4가 가장 빠르지만 압축률이 낮다.

크기와 속도의 절충점으로 zstd나 lzma 정도가 대안이 된다.

xz가 압축률이 가장 좋고 bzip2은 모든 면에서 이점이 없다.

참조

Comparison of Compression Algorithms