7-Zip을 더 빠르게 만드는 방법


35

압축 속도가 빠르고 빠르기 때문에 일반적으로 7-Zip보다 WinRAR을 사용합니다. 7-Zip 및 WinRAR 기본 설정을 일반 압축 및 최상의 압축과 비교하여 다른 파일 형식 및 크기에 대해 몇 가지 테스트를 수행했으며 많은 경우 WinRAR이 50 % 빨랐으며 실제로는 100 % 빨랐습니다. 그러나 나는 FOSS를 더 좋아합니다. 내 질문은 다음과 같습니다.

  1. 7-Zip 속도를 높일 수있는 방법이 있습니까? 나는 적어도 WinRAR의 속도와 동등하고 싶습니다.
  2. WinRAR에서와 같이 7-Zip에서 복구 세그먼트를 만드는 방법이 있습니까? 나는 아무것도 보지 못했지만 명령 줄 일 수 있다고 생각합니다.
  3. 안정적인 최신 버전을 사용하여 WinRAR 및 7-Zip을 테스트했습니다 (7-Zip이있는 4 점). 압축시 9.x 베타 릴리스가 눈에 띄게 빠릅니까?

나는 최소한의 압축으로 낮추는 것이 아니라 WinRAR의 비슷한 설정에서 더 빨리 이야기하고 있습니다.

중요한 경우 4GB DDR3 RAM이있는 쿼드 코어 Intel i7 720 (1.6 GHz) / (2.8 GHz)와 64 비트 버전의 7-Zip, 이중 부팅 데비안 x64 5.0.4 및 Windows 7을 사용합니다 집.


1
# 2-7-zip에는 현재 "복구 기록"또는 "ecc"기능이 없습니다. QuickPar / MultiPar 또는 ICE ECC와 같은 타사 소프트웨어가 필요하지만 아카이브의 일부가 아닙니다.
afrazier

답변:


36

당신이 얻을 경우 7 - 우편 9.13 베타 당신은 LZMA2에 아카이브 유형을 변경하고, 따라서 메모리 사용량이 급격하게 상승하지만 당신이 원하는만큼 많은 스레드로 사용할 수 있습니다.

베타를 설치하고, 보관하고 싶은 것들을 마우스 오른쪽 버튼으로 클릭 한 다음 7-Zip 연락처 메뉴에서 "아카이브에 추가 ..."를 클릭하면 아래와 같은 창이 나타납니다. 압축 방법 아래의 왼쪽에는 "LZMA2"가 표시되어 스레드 수를 조금 더 줄일 수 있습니다.

이는 시스템에보다 잘 맞출 수 있기 때문에> 2 코어 프로세서에서 성능을 크게 향상시킬 수있는 가능성이 있으며 일반 압축 방법은 최대 2 개의 스레드 만 처리 할 수 ​​있습니다.

이미지의 스레드 수 선택 상자 오른쪽에 표시되는 "/ 1"은 시스템의 프로세서 수이므로 권장되는 스레드 수입니다. 내 i7은 쿼드 코어 프로세서이지만 하이퍼 스레딩 (실제로 btw에 도움이 됨)이 있으므로 "/ 8"로 표시됩니다.

대체 텍스트


Anandtech.com은 7-Zip을 사용하여 멀티 코어 및 멀티 스레드 CPU에서 성능 향상을 벤치마킹하는 데 도움을주었습니다.
kmarsh

5
LZMA2를 활성화하는 명령 줄 인수는 무엇입니까?
djangofan

@Monkubai : 내 사무실의 i7 4c-8t에서 설정이 무엇이든 LZMA2 모드에서 7-zip 실행 8 코어를 얻을 수 없습니다. 모든 8 스레드를 실행할 수있는 유일한 방법은 압축 비율이 낮은 BZip2 알고리즘 (드롭 다운 메뉴에서)을 사용하는 것입니다.
Edward

@Edward 어떤 버전을 사용하고 있습니까? 9.20에서 해당 목록에서 lzma2를 선택하면 최대 8 개의 코어를 사용할 수있는 옵션이 제공됩니다.
Mokubai

2
@ Mokubai 9.20 공식 버전. 그래픽 UI에는 아무런 문제가 없지만 설정 패널에는 여전히 8/8 코어 매개 변수가 표시되지만 실제로 처리 할 때는 실제로 <20 % CPU 만 사용합니다. 나는 SU에 대해이 문제에 대한 빠른 연구를했지만 아직 그 이상한 이유를 알지 못했습니다. -m0 = lzma2 -mmt = 8과 같은 매개 변수와 함께 명령 줄 7z를 사용하면 압축이 ~ 100 % CPU를 ultilize하지만 GUI로 전환하면 단일 스레드 모드 또는 그와 비슷한 것으로 돌아갑니다 ... 매우 비효율적 인 방식으로 CPU를 사용하십시오 (<20 %).
Edward

31

각 스레드가 동시에 여러 파일을 압축하는 것처럼 보이므로 매우 큰 zip 작업의 성능을 높이기 위해 수행 할 수있는 최선의 방법은 스레드를 1로 설정하여 하드 드라이브가 한 번에 하나의 파일을 찾도록하는 것입니다.

-mmt=off7-zip 명령 줄 에 추가 하여 모든 일일 zip 백업 절차에서 성능을 향상시킵니다 . 여러 개의 작은 파일로 만들어진 "시각적 SVN 저장소"의 백업에는 50 분에서 60 분이 걸렸습니다.

와 함께 -mmt=off, 우리는 이제 항상 5 분 안에 일을합니다! 그리고이 50 분 동안 하드 드라이브를 찾기 위해 모든 서버가 매우 느 렸습니다. 이제 5 분 동안 모든 것이 매우 빠르게 유지됩니다.

머신에서 수행하는 모든 작업에서 하드 드라이브 활동은 항상 CPU 용량보다 느립니다. 병렬 작업을 비활성화하고 하드 드라이브가 파일을 하나씩 순차적으로 읽고 쓰는지 확인하여 디스크 성능을 향상시킬 수 있습니다.

또한 물리적 헤드가 읽기에서 쓰기로 이동하지 않기 때문에 disk1에서 읽고 ZIP을 disk2에 쓰는 것이 좋습니다.

기계 성능을 유지하면서 최대 ZIP 속도를 얻을 수있는 샘플 라인 :

start "" /wait /belownormal c:\Progra~1\7-Zip\7z.exe a -tzip -mx=1 -mmt=off t:\backup.zip d:\folderToBackup\*

D:그리고 T:이 다른 물리적 디스크는


5
이것이 제안 된 답변과 정반대이지만 실제로는 정확합니다. 방금 단일 스레드 사용으로 변경하여 아카이브 작업을 12 시간에서 2 시간으로 단축했습니다.
N Jones

2
참된. 이것은 나에게도 효과가있었습니다. 아마도 -mx=1압축을 거의 사용하지 않기 때문에 아마도 의미 가 있습니다. 압축하지 않으면 대부분의 작업이 HDD에 의해 수행됩니다. -mx=9프로세서 를 설정 하면 실제로 파일을 압축하기 위해 작동해야합니다. 나는 그것을 시도해야하지만 병목 현상 (HDD 또는 CPU)에 따라 더 좋거나 나쁠 수 있습니다.
Diego Jancic 2016 년

9
이 답변은 노화 기술에 매우 구체적입니다. 탐색 시간이 훨씬 더 짧기 때문에 SSD를 사용하여 시도하는 것이 유용하지 않을 수 있습니다. 임의 IOPS는 병목 현상이 발생할 가능성이 적습니다. 압축을 거의하지 않았기 때문에 귀하의 경우는 매우 특별했습니다. 기본적으로 파일 복사를하고있었습니다. 따라서 회전하는 HD에 대한 순차적 액세스는 분명히 승자입니다. 일반적인 7zip 유스 케이스는 IO 바운드가 아닌 CPU 바운드입니다. 이를 위해서는 모든 CPU 코어를 사용해야합니다. 그러나 비슷한 상황에있는 사람들에게는 조언이 매우 중요합니다.
dss539

1
로도 -mmt=off더 빠릅니다 -m0=lzma2 -mx=5. (없음 -mmt=off: 실제 1m27.811s, 사용자 2m4.976s, SYS 0m3.729s .와 -mmt=off: 실제 1m18.896s, 사용자 1m17.160s,에 sys 0m1.661s )
ostrokach

스레드를 1로 줄이는 것이 훨씬 느려 보입니다. 20GB의 파일에 대해 1 개의 스레드로 약 2MB / 초의 속도로 처리하고있었습니다. 16 개의 스레드로 약 16MB / 초의 속도로 처리했습니다.
Lightyear Buzz

0

최근에 사용한 모든 압축 알고리즘 (ZIP, RAR, 7z, tar / bzip2)은 CPU 바인딩이 아니라 I / O 바인딩입니다. Mac 랩톱의 MenuMeters보기는 디스크 활동은 일정하지만 CPU 활동은 50 % 이하입니다.

따라서 압축 / 압축 해제 속도를 높이는 방법은 디스크 속도를 높이는 것입니다. 항상 가능하지는 않습니다.

이것에 대한 나의 "해결책"은 무언가를 압축하는 동안 다른 것을하는 것입니다. :-)


2
디스크 I / O가 Matt의 문제라면, WinRAR이 어떻게 든 시스템에서 7Zip보다 더 빠른 속도로 디스크를 읽을 수 있음을 의미합니다.
foraidt

1
WinRAR이 더 스마트 한 디스크 I / O를 사용할 수 있습니다. Info-ZIP의 우편 번호는 실제로 작은 I / O 버퍼로 인해 방해를 받는다는 것을 알고 있습니다. 그러나 압축 알고리즘의 차이 일 수 있습니다.
chrish

7z는 빠른 모드에서도 확실히 I / O 바운드가 아닙니다.
Sarge Borsch

설명한 대부분의 방법은 병렬로 압축되지 않으므로 CPU의 1 코어 만 사용되므로 2 코어 머신에서는 50 %를 얻습니다. IO 바인딩이 아닌 Mac에서 CPU가 바인딩되어 있고 대부분의 Mac에는 실제로 디스크 탐색으로 고통받지 않는 SSD가 있습니다. 옵션을 선택하면 7z가 병렬로 압축 될 수 있습니다. (tar, zip, bzip, gzip, xs는 일반적으로 그렇지 않습니다)
Martin

0

우리 회사에서는 이전 버전의 7-zip (4.52 베타)을 사용하고 있으며 다음 명령을 실행하고 있습니다.

"C:\Program Files\7-Zip\7z.exe" a -mx7 -mmt -sfx -xr!*.<exclude_extension> <destination>.exe <source_directory>\* 

이것은 잘 작동하지만 최신 버전 16.04 (32 비트)로 업그레이드 한 후에 성능이 크게 떨어 지므로 이전 버전으로 다시 다운 그레이드하기로 결정했습니다.


0

이 예제와 같은 코드를 사용할 때 성능을 향상시키는 또 다른 작은 트릭 :

$7zip = "$env:ProgramFiles\7-Zip\7z.exe"
set-alias sz $7zip
$FileZip = "$DiscoZip\temp\$TempFile"
foreach ($DirData in $ListDir) { $out7z = (sz a $FileZip $DirData) }

가능하면 $ ListDir 배열에 디렉토리를 크기별로 작은 것부터 큰 것까지 나열했습니다. 이는 각주기마다 7zip이 원래 파일보다 큰 (또는 큰) 임시 파일을 작성한 다음 새 파일을 추가하기 때문에 발생합니다. MB가 2 개 이상인 디렉토리와 GB가 1GB 인 경우가 많았으며 시간 절약은 몇 분 정도 걸립니다.


기존 아카이브에 파일을 추가 할 때만 적용됩니다. 한 번에 여러 파일을 추가 할 때는 하나의 임시 파일 만 사용됩니다. 새 아카이브를 만들 때 임시 파일은 전혀 사용되지 않습니다.
Daniel B

-1

내 추측으로는 압축 / 압축 해제 알고리즘을 다시 쓰지 않고 7-Zip 속도를 높일 수는 없습니다. 찾고있는 50 ~ 100 % 증가합니다.


6
전혀 사실이 아닙니다. 기본 설정을 변경하여 7-zip의 속도를 크게 높일 수 있습니다. 실제로 기본 설정은 가장 작은 파일 크기 (및 가장 느린 압축 알고리즘-BZip2)에 맞게 조정됩니다. ZIP으로 변경하고 LZMA 압축을 "Fastest"로 설정하면 훨씬 빠릅니다.
NickG
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.