주변에는 많은 압축 알고리즘 bzip2
이 있으며 느린 알고리즘 중 하나입니다. 평범한 gzip
압축은 보통 훨씬 더 빠르지 않은 경향이 있습니다. 속도가 가장 중요 할 때가 가장 lzop
좋아합니다. 압축이 좋지 않지만 너무 빠릅니다.
나는 재미를 가지고 병렬 구현을 포함하여 몇 가지 알고리즘을 비교하기로 결정했습니다. 입력 파일은 pg_dumpall
내 워크 스테이션에서 1913MB SQL 파일 의 명령 출력입니다 . 하드웨어는 구형 쿼드 코어 i5입니다. 시간은 압축의 벽시계 시간입니다. 병렬 구현은 4 개의 코어를 모두 사용하도록 설정되어 있습니다. 압축 속도별로 정렬 된 테이블.
Algorithm Compressed size Compression Decompression
lzop 398MB 20.8% 4.2s 455.6MB/s 3.1s 617.3MB/s
lz4 416MB 21.7% 4.5s 424.2MB/s 1.6s 1181.3MB/s
brotli (q0) 307MB 16.1% 7.3s 262.1MB/s 4.9s 390.5MB/s
brotli (q1) 234MB 12.2% 8.7s 220.0MB/s 4.9s 390.5MB/s
zstd 266MB 13.9% 11.9s 161.1MB/s 3.5s 539.5MB/s
pigz (x4) 232MB 12.1% 13.1s 146.1MB/s 4.2s 455.6MB/s
gzip 232MB 12.1% 39.1s 48.9MB/s 9.2s 208.0MB/s
lbzip2 (x4) 188MB 9.9% 42.0s 45.6MB/s 13.2s 144.9MB/s
pbzip2 (x4) 189MB 9.9% 117.5s 16.3MB/s 20.1s 95.2MB/s
bzip2 189MB 9.9% 273.4s 7.0MB/s 42.8s 44.7MB/s
pixz (x4) 132MB 6.9% 456.3s 4.2MB/s 7.9s 242.2MB/s
xz 132MB 6.9% 1027.8s 1.9MB/s 17.3s 110.6MB/s
brotli (q11) 141MB 7.4% 4979.2s 0.4MB/s 3.6s 531.6MB/s
서버의 16 개 코어가 모두 유휴 상태에있을 때 유휴 상태 인 경우 pbzip2
속도가 크게 향상 될 수 있습니다. 그러나 여전히 더 빠른 속도가 필요하고 ~ 20 % 더 큰 파일을 허용 할 수 있습니다 gzip
. 아마도 가장 좋은 방법 일 것입니다.
업데이트 :brotli
결과를 표에 추가했습니다 (TOOGAM 답변 참조). brotli
I 세 설정되도록 첨가의 압축 품질 설정은, 압축률과 속도에 매우 큰 영향을 미친다 ( q0
, q1
및 q11
). 기본값은 q11
이지만 매우 느리고 여전히 xz
. q1
그래도 아주 좋아 보인다; 와 동일한 압축 비율 gzip
이지만 4-5 배 빠릅니다!
업데이트 : 추가 lbzip2
(gmathts 설명을 참조) zstd
테이블에 (조니의 코멘트) 및 압축 속도하여 분류. 큰 압축 비율 로 3 배 빠르게 압축 lbzip2
하여 bzip2
가족을 다시 달리게합니다 pbzip2
! zstd
또한 합리적인 것처럼 보이지만 brotli (q1)
비율과 속도가 모두 중요합니다.
평범한 gzip
것이 최선의 방법 이라고 내 원래 결론은 거의 바보처럼 보이기 시작했다. 유비쿼터스에도 불구하고 여전히 이길 수는 없습니다.)