7-Zip daha hızlı nasıl yapılır


35

Normalde 7-Zip üzerinden WinRAR kullanıyorum, çünkü sıkıştırma ile daha hızlı ve daha az verimli. 7-Zip ve WinRAR varsayılan ayarlarını normal sıkıştırma ve en iyi sıkıştırma ile karşılaştırarak farklı dosya türleri ve boyutları üzerinde birkaç test yaptım ve birçok durumda WinRAR% 50 daha hızlıydı ve bazı durumlarda% 100 daha hızlıydı. Ancak FOSS'u daha çok seviyorum. Sorularım işte burada:

  1. 7-Zip hızlandırma yapmanın bir yolu var mı? En azından WinRAR'ın hızına eşit olmasını istiyorum.
  2. WinRAR'da olduğu gibi 7-Zip sürümünde kurtarma bölümleri yapmanın bir yolu var mı? Hiç görmedim ama sanırım bir komut satırı olayı olabilir.
  3. Her birinin en son kararlı sürümünü (7-Zip'li 4-nokta-bir şey) kullanarak WinRAR ve 7-Zip'i test ettim. 9.x beta sürümü, sıkıştırma sırasında gözle görülür şekilde daha hızlı mı?

WinRAR'da karşılaştırılabilir bir ortamda daha hızlı konuşuyorum, sadece minimum sıkıştırma oranını düşürmekle kalmıyor.

Önemli olursa, 4 GB DDR3 RAM içeren dört çekirdekli Intel i7 720 (1.6 GHz) / (2.8 GHz) ve 7-Zip sürümünün 64 bit sürümünü ve çift önyüklemeli Debian x64 5.0.4 ve Windows 7'yi kullanıyorum Ev.


1
# 2 - 7-zip ile ilgili olarak şu anda herhangi bir "kurtarma kaydı" veya "ecc" yeteneği yoktur. QuickPar / MultiPar veya ICE ECC gibi üçüncü taraf yazılımlara ihtiyacınız olacak, ancak daha sonra arşivin bir parçası değil.
afrazier

Yanıtlar:


36

Eğer alırsanız 7-Zip 9.13 beta Eğer LZMA2 arşiv türünü değiştirmek ve böylece bellek kullanımı olağanüstü artar olsa, gibi birçok konuları olarak kullanmak mümkün olabilir.

Beta sürümünü yükleyin, arşivlemek istediğiniz öğeyi sağ tıklayın, ardından 7-Zip içerik menüsü altında "Arşive ekle ..." yi tıklayın ve aşağıdaki pencereye benzer bir şey elde edin. Sıkıştırma Yöntemi altındaki sol tarafta, biraz daha aşağı bir seçenek olacak iplik sayısını değiştirmenize izin verecek "LZMA2" yi bulmalısınız.

Bu, sisteminize daha iyi şekilde ayarlanabildiği için> 2 çekirdekli işlemcilerde büyük ölçüde artan performans potansiyeline sahiptir ve normal sıkıştırma yöntemi yalnızca maksimum 2 dişi kaldırabilir.

Resimdeki iplik seçim kutusunun sağ tarafında gördüğünüz "/ 1", sisteminizdeki işlemci sayısı ve dolayısıyla önerilen iplik sayısıdır. Benim i7 bir dört çekirdekli işlemci ama hiper-iş parçasına (ki burada aslında btw'ye yardım ediyor) yani "/ 8" olarak gösteriliyor.

alt metin


Anandtech.com, çok çekirdekli ve çok iş parçacıklı CPU'larda bulunabilecek performans geliştirmelerini karşılaştırmaya yardımcı olmak için 7-Zip kullanıyor ve bu nesil yazılımın çoğunda daha teorik.
kmarsh

5
LZMA2'yi etkinleştirmek için komut satırı argümanı nedir?
djangofan

@Monkubai: Ofisimdeki i7 4c-8t'de, ayarlanan ne olursa olsun LZMA2 modunda 7 fermuarlı tam 8 çekirdekli çalışamıyorum. Yalnızca 8 dizinin çalışmasına izin veren yöntem, daha düşük sıkıştırma oranına sahip BZip2 algoritmalarını (aşağı açılır menüden) kullanıyor.
Edward

@Edward hangi sürümü kullanıyorsunuz? 9.20'de bu listeden lzma2'yi seçersem, 8 çekirdeğe kadar kullanma seçeneğim olur.
Mokubai

2
@Mokubai 9.20 resmi sürümü. Ve grafik UI ile yanlış bir şey yok, hala ayar panelinde 8/8 çekirdek parametresini görüntüler, ancak işleme sırasında aslında sadece <% 20 cpu kullanır. SU'da sorun için hızlı bir araştırma yaptım ancak bu tuhaflığın nedenini henüz bulamadım. Sadece -m0 = lzma2 -mmt = 8 gibi parametrelerle 7z komut satırı kullanırsam sıkıştırmanın ~% 100 CPU'yu başlattığını ancak GUI'ye geçtiğimde, tek-iplik moduna döndüğünü ya da bunun gibi bir şey olduğunu ... CPU'yu çok yetersiz bir şekilde kullanın (<% 20).
Edward

31

Her iş parçacığı aynı anda birden fazla dosyayı sıkıştırıyor gibi göründüğü için, çok büyük zip işlerinin performansını artırmak için yapabileceğiniz en iyi şey, sabit sürücünüzün bir seferde bir dosya arayacağından emin olmak için iş parçacığını 1 olarak ayarlamaktır.

-mmt=off7 zip komut satırına ekleyerek tüm günlük zip yedekleme prosedürlerimizdeki performansı artırıyoruz. Birden fazla küçük dosyadan yapılan "görsel SVN deposu" nu yedeklememiz 50 ila 60 dakika sürdü.

İle -mmt=off, şimdi her zaman daha az beş dakika içinde yapmak! Ve bu 50 dakika boyunca, aradığımız sabit sürücüler nedeniyle tüm sunucularımız çok yavaştı. Şimdi, bu beş dakika boyunca her şey çok hızlı kalıyor.

Bir makinede yaptığınız her şey için, sabit sürücü etkinliği her zaman CPU kapasitenizden daha yavaş olacaktır. Paralel etkinlikleri devre dışı bırakarak ve sabit sürücünün dosyalarınızı seri olarak tek tek okuduğundan (yazdığından) emin olarak disk performansını artırabilirsiniz.

Ayrıca, fiziksel kafa okumadan yazmaya geçmediğinden disk1'den okumak ve ZIP'ınızı disk2'ye yazmak daha iyidir.

Makine performansını korurken maksimum ZIP hızını elde etmek için örnek hat:

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

D:ve T:2 farklı fiziksel disk


5
Bunun önerilen cevabın tam tersi olması şaşırtıcı, ancak gerçekten doğru. Tek bir iş parçacığı kullanarak değiştirerek bir arşivleme işlemini 12 saatten 2'ye çıkardım.
N Jones

2
Doğru. Bu da benim için çalıştı. Muhtemelen kullanması mantıklı çünkü -mx=1(neredeyse hiç sıkıştırma yok). Sıkıştırmıyorsanız, işlerin çoğu HDD tarafından yapılır. -mx=9İşlemcileri ayarlarsanız , dosyayı sıkıştırmak için gerçekten çalışmanız gerekir. Denemeye ihtiyacım var, ancak tıkanıklığın ne olduğuna bağlı olarak (HDD veya CPU), daha iyi veya daha kötü olabilir.
Diego Jancic

9
Bu cevap, yaşlanan bir teknolojiye çok özeldir. Bu, SSD'lerle denemek için muhtemelen faydalı değildir, çünkü arama süresi çok daha düşüktür. Rasgele IOPS'un darboğaz olma olasılığı daha düşüktür. Davanız oldukça özeldi çünkü çok az sıkıştırma yaptınız. Temelde bir dosya kopyası yapıyordun. Yani evet, dönen bir HD'ye ardışık erişim açıkça kazanır. Tipik 7zip kullanım alanları büyük olasılıkla IO'ya bağlı değil CPU'ya bağlı olacaktır. Bunun için tüm CPU çekirdeğini kullanmak esastır. Ancak benzer durumdakiler için tavsiyeleriniz çok değerli.
dss539

1
Kullanımı -mmt=offbile daha hızlı -m0=lzma2 -mx=5. (Olmadan -mmt=off: gerçek 1m27.811s, kullanıcı 2m4.976s, sys 0m3.729s . İle -mmt=off: gerçek 1m18.896s, kullanıcı 1m17.160s, sys 0m1.661s )
ostrokach

Konu 1'i azaltmak için benim için çok daha yavaş gibi görünüyor. 20 GB dosya için 1 iş parçacığı ile yaklaşık 2 MB / sn hızında işlem görüyordu. 16 iplikle, yaklaşık 16 MB / sn hızında işlem görüyordu.
Lightyear Buzz,

0

Yakın zamanda kullandığım tüm sıkıştırma algoritmaları (ZIP, RAR, 7z, tar / bzip2) CPU'ya bağlı değil, G / Ç'ye bağlıdır. Mac dizüstü bilgisayarımda MenuMeters'ı izlemek, sabit disk etkinliği gösterir, ancak yalnızca% 50 veya daha az CPU etkinliği gösterir.

Bu nedenle, sıkıştırma / açma işlemini hızlandırmanın yolu diskinizi hızlandırmaktır. Bu her zaman mümkün değildir.

Bu konudaki "çözümüm", bir şeyi sıkıştırırken başka bir şey yapmak. :-)


2
Eğer disk G / Ç Matt'in problemi olsaydı, WinRAR'ın bir şekilde diskinde 7Zip'ten daha hızlı bir şekilde okuyabildiği anlamına gelirdi.
foraidt

1
WinRAR'ın daha akıllı disk G / Ç kullanması mümkündür; Info-ZIP'ın zip'inin gerçekten küçük G / Ç arabellekleri tarafından engellendiğini biliyorum. Fakat evet, sıkıştırma algoritmaları arasında bir fark olabilir.
chrish

7z kesinlikle hızlı modda bile G / Ç'ye bağlı değildir.
Sarge Borsch

Tanımladığınız yöntemlerin çoğu paralel olarak sıkıştırılmaz, bu nedenle CPU'nuzun sadece 1 çekirdeği kullanılır, bu nedenle% 50'lik bir 2 çekirdekli makinede kullanılır. Mac'inizde CPU'ya bağlı olduğundan korkuyorum, IO'ya bağlı değil ve çoğu bilgisayarda SSD var. 7z, bunu yapmayı seçerseniz, paralel olarak sıkıştırabilir. (katran, fermuar, bzip, gzip, xs genellikle yapmaz)
Martin

0

Şirketimde eski sürüm olan 7-zip (4.52 beta) ile çalışıyoruz ve şu komutu veriyoruz:

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

Bu iyi çalışıyor, ancak daha yeni sürüm 16.04'e (32-bit) yükselttikten sonra, performans büyük ölçüde düştü, bu yüzden eski sürüme geri dönmeye karar verdim.


0

Bu örnek gibi bir kod kullandığınızda performansı artırmak için başka bir küçük hile:

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

mümkünse, $ ListDir dizisinde, en küçükten en büyüğe doğru dizinleri boyuta göre listelenmiştir. Bunun nedeni, her foreach döngüsünde 7zip, orijinalinden daha büyük (veya daha büyük) geçici bir dosya oluşturması ve ardından içine yeni bir dosya eklemesidir. Bazı MB ve bir büyük GB büyüklüğünde iki ya da daha fazla dizinin olduğu ve zaman tasarrufu için birkaç dakika harcanan durumları denedim.


Bunun sadece mevcut bir arşive dosya eklerken uygulanacağına inanıyorum. Aynı anda birden fazla dosya eklerken, yalnızca bir geçici dosya kullanılacaktır. Yeni bir arşiv oluştururken, geçici bir dosya hiç kullanılmayacaktı.
Daniel B

-1

Benim tahminim, 7-Zip hızını sıkıştırma / sıkıştırma sıkıştırma algoritmalarını yeniden yazmadan imkansız olması, hızı artıran bir tür ince ayar olabilir, ancak muhtemelen sadece% 10 veya% 15 gibi bir artış olacak, büyük değil Aradığın% 50-100 artış.


6
Hiç doğru değil. Varsayılan ayarlardan çıkartarak 7 fermuarda büyük bir hız ayarlaması yapabilirsiniz. Aslında, varsayılan ayarlar en küçük dosya boyutu için ayarlanmıştır (ve en yavaş sıkıştırma algoritması - BZip2). ZIP ve LZMA sıkıştırmasını "En Hızlı" olarak değiştirmek, onu çok daha hızlı yapar.
NickG
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.