지금 까지 tar
LZMA 압축 옵션 ( --lzma
또는--xz
--lzip
최근에 7-Zip이 2021년에 Linux로 포팅되었다는 사실을 확인했습니다(https://www.xda-developers.com/7-zip-linux-official-release/). 나는 이전 P7Zip에 대해 말하는 것이 아닙니다(https://p7zip.sourceforge.net/), 이는 더 이상 유지 관리되지 않는 것으로 보이지만 공식 7-Zip에 관한 것입니다.
그래서 테스트한 결과 동일한 압축 비율에 대해 다른 모든 Linux LZMA 구현보다 훨씬 빠르다는 사실에 매우 놀랐습니다.
다음은 내 테스트입니다(Debian 11). 각 테스트 사이에 RAM 캐시를 지웠습니다( sync && echo 3 > /proc/sys/vm/drop_caches
).
저는 여러 유형의 파일, PDF, 텍스트, 오픈 오피스 등이 포함된 163M 폴더를 작업하고 있습니다.
$ du -hs TEST/
163M TEST/
7-Zip을 사용하면 15초 안에 127M 파일로 압축할 수 있습니다.
$ time tar c -hp TEST/ | 7zz a -si test.tar.7z
real 0m14,565s
(...)
$ ll test.tar.7z
(...) 127M (...) test.tar.7z
다른 모든 LZMA 구현의 경우 동일한 아카이브 크기에 대해 거의 5배(약 1'13")의 시간이 걸립니다!
$ time tar -chp --lzma -f test.tar.lzma TEST/
real 1m13,159s
$ time tar -chp --xz -f test.tar.xz TEST/
real 1m12,889s
$ time tar -chp --lzip -f test.tar.lz TEST/
real 1m12,525s
$ ll test.tar.{7z,lz*,xz}
(...) 127M (...) test.tar.7z
(...) 127M (...) test.tar.lz
(...) 127M (...) test.tar.lzma
(...) 127M (...) test.tar.xz
문제가 없는지 확인하기 위해 tar
동일한 테스트를 수행했지만 , 및 스위치를 사용하는 대신 tar
출력을 로 파이프했습니다 . 결과는 동일합니다.lzma|xz|lzip
--lzma
--xz
--lzip
따라서 기본적으로 7-Zip의 Linux 버전은 다른 모든 LZMA 구현을 매우 암울하게 만듭니다. 나는 7-Zip이 Linux 소유자 및 권한을 지원하지 않는다고 생각하지만 파일을 압축할 때는 중요하지 않습니다 .tar
.
그렇다면 7-Zip의 Linux 버전이 다른 LZMA 구현보다 훨씬 빠른 이유를 아는 사람이 있습니까?
답변1
내 질문에 대한 답을 찾았습니다. 기본적으로는 7zz
기본적으로 멀티스레드인 것처럼 보이지만 xz
or 의 경우는 그렇지 않습니다 lzip
. 방정식에 멀티스레딩을 추가하면 7-Zip이 여전히 조금 더 빠르더라도 결과는 훨씬 더 가까워집니다.
$ time tar c -hp TEST/ | 7zz a -si test.tar.7z
real 0m17,986s
// free memory
$ time tar c -hp TEST/ | xz --threads=0 > test.tar.xz
real 0m22,920s
// free memory
$ sudo apt install plzip
$ time tar -chp --lzip -f test.tar.lz TEST/
real 0m20,134s
흥미롭게도 설치 plzip
(병렬 lzip)는 tar --lzip
이를 자동으로 사용할 수 있습니다( 적어도 데비안에서는 /usr/bin/lzip
심볼릭 링크가 되기 때문일 것입니다)./usr/bin/lzip.plzip
[ 편집하다 ]
또한 주의사항버전 5.5.1부터(2024년 1월), 사용하지 않았으며 xz
기본값은 다중 스레드입니다.
이제 멀티스레드 모드가 기본 모드입니다. 이렇게 하면 압축 속도가 향상되고 여러 스레드에서 압축을 풀 수 있는 .xz 파일이 생성되지만 메모리 사용량이 증가하고 압축이 약간 나빠집니다.
답변2
7zz 사용손으로 쓴 편집, p7zip 및 xz는 그렇지 않습니다.
또한 XZ의 LZMA 구현은 매우 구식입니다. 지난 7년 동안 Igor Pavlov는 7-zip의 속도를 높이기 위해 수많은 변경 작업을 수행했습니다.