Normalerweise verwende ich WinRAR über 7-Zip, weil es mit Komprimierung schneller und nur wenig weniger effizient ist. Ich habe einige Tests mit verschiedenen Dateitypen und -größen durchgeführt, bei denen die 7-Zip- und WinRAR-Standardeinstellungen auf ihre normale Komprimierung und ihre beste Komprimierung hin verglichen wurden. In vielen Fällen war WinRAR 50% schneller und in einigen Fällen sogar 100% schneller. Aber ich mag FOSS mehr. Also hier sind meine Fragen:
- Gibt es eine Möglichkeit, die Geschwindigkeit von 7-Zip zu erhöhen? Ich möchte, dass es mindestens der Geschwindigkeit von WinRAR entspricht
- Gibt es eine Möglichkeit, Wiederherstellungssegmente in 7-Zip wie in WinRAR zu erstellen? Ich habe keine gesehen, aber ich denke, es könnte eine Befehlszeilensache sein.
- Ich habe WinRAR und 7-Zip mit der jeweils neuesten stabilen Version (4-Punkt-Etwas mit 7-Zip) getestet. Ist die Beta-Version von 9.x bei der Komprimierung merklich schneller?
Ich spreche über schneller bei einer vergleichbaren Einstellung in WinRAR, nicht nur auf ein Minimum an Komprimierung zu senken.
Wenn es darauf ankommt, verwende ich einen Quad-Core Intel i7 720 (1,6 GHz) / (2,8 GHz) mit 4 GB DDR3-RAM und die 64-Bit-Version von 7-Zip sowie Debian x64 5.0.4 und Windows 7 mit Dual-Boot Zuhause.
Antworten:
Wenn Sie die Beta-Version von 7-Zip 9.13 erhalten , können Sie den Archivtyp in LZMA2 ändern und so so viele Threads verwenden, wie Sie möchten, obwohl die Speichernutzung phänomenal zunimmt.
Installiere die Beta, klicke mit der rechten Maustaste auf das Zeug, das du archivieren möchtest und klicke dann im 7-Zip-Kontextmenü auf "Zum Archiv hinzufügen ...". Auf der linken Seite sollten Sie unter Komprimierungsmethode "LZMA2" finden, mit dem Sie die Anzahl der Threads ändern können, die eine Option etwas weiter unten sein werden.
Dies hat das Potenzial, die Leistung auf> 2 Kernprozessoren erheblich zu steigern, da sie besser auf Ihr System abgestimmt werden kann und die normale Komprimierungsmethode nur maximal 2 Threads verarbeiten kann.
Das "/ 1", das Sie rechts neben dem Auswahlfeld für die Anzahl der Threads im Bild sehen, ist die Anzahl der Prozessoren in Ihrem System und damit die empfohlene Anzahl der Threads. Mein i7 ist ein Quad-Core-Prozessor, verfügt aber über Hyperthreading (was hier übrigens tatsächlich hilft), sodass es als "/ 8" angezeigt wird.
quelle
Da jeder Thread scheinbar mehrere Dateien gleichzeitig komprimiert, können Sie die Leistung sehr großer Zip-Jobs am besten steigern, indem Sie den Thread auf 1 setzen, um sicherzustellen, dass Ihre Festplatte nach jeweils einer Datei sucht.
Wir verbessern die Leistung aller unserer täglichen Zip-Backup-Vorgänge durch Hinzufügen
-mmt=off
einer 7-Zip-Befehlszeile. Unsere Sicherung des "Visual SVN Repository", das aus mehreren kleinen Dateien besteht, dauerte zwischen 50 und 60 Minuten.Mit machen
-mmt=off
wir jetzt immer in weniger als fünf Minuten! Und während dieser 50 Minuten waren alle unsere Server aufgrund der Suche nach Festplatten sehr langsam. Jetzt bleibt in diesen fünf Minuten alles sehr schnell.Für alles, was Sie auf einem Computer ausführen, ist die Festplattenaktivität immer langsamer als Ihre CPU-Kapazität. Sie können die Festplattenleistung steigern, indem Sie parallele Aktivitäten deaktivieren und sicherstellen, dass die Festplatte Ihre Dateien nacheinander seriell liest (und schreibt).
Es ist auch besser, von Disk1 zu lesen und Ihre ZIP-Datei auf Disk2 zu schreiben, da sich der physische Kopf nicht von Lesen zu Schreiben bewegt.
Beispiellinie für maximale ZIP-Geschwindigkeit bei gleichbleibender Maschinenleistung:
D:
undT:
sind 2 verschiedene physikalische Festplattenquelle
-mx=1
(was fast keine Komprimierung ist). Wenn Sie nicht komprimieren, wird der größte Teil der Arbeit von der Festplatte erledigt. Wenn Sie festlegen, müssen-mx=9
die Prozessoren wirklich arbeiten, um die Datei zu komprimieren. Ich müsste es versuchen, aber je nach Engpass (Festplatte oder CPU) kann es besser oder schlechter sein.-mmt=off
ist sogar mit schneller-m0=lzma2 -mx=5
. (Ohne-mmt=off
: echte 1m27.811s, Benutzer 2m4.976s, sys 0m3.729s . Mit-mmt=off
: echte 1m18.896s, Benutzer 1m17.160s, sys 0m1.661s )Alle Komprimierungsalgorithmen, die ich kürzlich verwendet habe (ZIP, RAR, 7z, tar / bzip2), sind E / A-gebunden, nicht CPU-gebunden. Das Betrachten von MenuMeters auf meinem Mac-Laptop zeigt eine konstante Festplattenaktivität, aber nur 50% oder weniger CPU-Aktivität.
Die Möglichkeit, die Komprimierung / Dekomprimierung zu beschleunigen, besteht darin, die Festplatte zu beschleunigen. Das ist nicht immer möglich.
Meine "Lösung" besteht darin, einfach etwas anderes zu tun, während ich etwas komprimiere. :-)
quelle
In meiner Firma arbeiten wir mit einer alten Version von 7-zip (4.52 Beta) und führen den folgenden Befehl aus:
Dies funktioniert einwandfrei, aber nach dem Upgrade auf die neuere Version 16.04 (32-Bit) ist die Leistung enorm gesunken. Daher habe ich mich entschlossen, ein Downgrade auf die alte Version durchzuführen.
quelle
Ein weiterer kleiner Trick, um die Leistung zu verbessern, wenn Sie Code wie diesen verwenden:
Wenn möglich, ist in dem Array $ ListDir die Verzeichnisse nach Größe aufgelistet, vom kleinsten bis zum größten. Dies geschieht, weil 7zip bei jedem foreach-Zyklus eine temporäre Datei erstellt, die genauso groß (oder größer) ist als die ursprüngliche, und dann eine neue Datei hinzufügt. Ich habe es mit Fällen versucht, in denen es zwei oder mehr Verzeichnisse gibt, die einige MB groß und eine große Anzahl GB groß sind, und die Zeitersparnis in der Größenordnung von mehreren Minuten liegt.
quelle
Meine Vermutung ist, dass es unmöglich ist, 7-Zip zu beschleunigen, ohne die Komprimierungs- / Dekomprimierungsalgorithmen neu zu schreiben. Möglicherweise gibt es eine Optimierung, die die Geschwindigkeit erhöht, aber wahrscheinlich nur eine Steigerung um 10 oder 15%, keine massive 50-100% mehr, als Sie suchen.
quelle