Zwykle używam WinRAR ponad 7-Zip po prostu dlatego, że jest szybszy i tylko trochę mniej wydajny przy kompresji. Zrobiłem kilka testów dla różnych typów i rozmiarów plików, porównując domyślne ustawienia 7-Zip i WinRAR z ich normalną kompresją i najlepszą kompresją, aw wielu przypadkach WinRAR był o 50% szybszy, a w niektórych faktycznie o 100% szybszy. Ale bardziej lubię FOSS. Oto moje pytania:
- Czy istnieje sposób na przyspieszenie 7-Zip? Chciałbym, żeby przynajmniej była na równi z prędkością WinRAR
- Czy istnieje sposób na utworzenie segmentów odzyskiwania w 7-Zip, tak jak w WinRAR? Nie widziałem żadnych, ale myślę, że może to być wiersz poleceń.
- Przetestowałem WinRAR i 7-Zip przy użyciu najnowszej stabilnej wersji każdego z nich (4-kropkowe coś z 7-Zip). Czy wersja beta 9.x jest zauważalnie szybsza podczas kompresji?
Mówię o szybszym przy porównywalnym ustawieniu w WinRAR, a nie tylko obniżeniu do absolutnej minimalnej kompresji.
Jeśli to ważne, używam czterordzeniowego procesora Intel i7 720 (1,6 GHz) / (2,8 GHz) z 4 GB pamięci RAM DDR3 i 64-bitowej wersji 7-Zip oraz podwójnego rozruchu Debian x64 5.0.4 i Windows 7 Dom.
Odpowiedzi:
Jeśli otrzymasz wersję 7-Zip 9.13 w wersji beta , możesz zmienić typ archiwum na LZMA2, dzięki czemu możesz używać tyle wątków, ile chcesz, chociaż użycie pamięci rośnie fenomenalnie.
Zainstaluj wersję beta, kliknij prawym przyciskiem myszy elementy, które chcesz zarchiwizować, a następnie w menu kontekstowym 7-Zip kliknij „Dodaj do archiwum ...”, a otrzymasz coś podobnego do okna poniżej. Po lewej stronie w części Metoda kompresji powinieneś znaleźć „LZMA2”, który pozwoli ci zmienić liczbę wątków, co będzie opcją nieco niżej.
Może to znacznie zwiększyć wydajność procesorów> 2-rdzeniowych, ponieważ można je lepiej dostroić do systemu, a normalna metoda kompresji może obsłużyć maksymalnie 2 wątki.
Symbol „/ 1” widoczny po prawej stronie pola wyboru liczby wątków na obrazie to liczba procesorów w systemie, a zatem zalecana liczba wątków. Mój i7 jest czterordzeniowym procesorem, ale ma hyperthreading (co tak naprawdę pomaga tutaj przy okazji), więc pokazuje się jako „/ 8”
źródło
Ponieważ wydaje się, że każdy wątek kompresuje wiele plików jednocześnie, najlepszą rzeczą, jaką możesz zrobić, aby zwiększyć wydajność bardzo dużych zadań zip, jest ustawienie wątków na 1, aby mieć pewność, że dysk twardy będzie szukał jednego pliku na raz.
Poprawiamy wydajność wszystkich naszych codziennych procedur tworzenia kopii zapasowych zip, dodając
-mmt=off
do linii poleceń 7-zip. Tworzenie kopii zapasowej „wizualnego repozytorium SVN”, które składa się z wielu małych plików, trwało od 50 do 60 minut.Dzięki
-mmt=off
teraz zawsze robimy to w mniej niż pięć minut! W ciągu tych 50 minut wszystkie nasze serwery działały bardzo wolno z powodu poszukiwania dysków twardych. Teraz wszystko pozostaje bardzo szybkie w ciągu tych pięciu minut.W przypadku wszystkich czynności wykonywanych na komputerze aktywność dysku twardego będzie zawsze wolniejsza niż pojemność procesora. Możesz zwiększyć wydajność dysku, wyłączając równoległe działania i upewniając się, że dysk twardy odczytuje (i zapisuje) twoje pliki jeden po drugim.
Lepiej jest również czytać z dysku 1 i zapisywać plik ZIP na dysku 2, ponieważ fizyczna głowa nie przesuwa się z odczytu do zapisu.
Przykładowa linia, aby uzyskać maksymalną prędkość ZIP przy zachowaniu wydajności maszyny:
D:
iT:
są 2 różnymi dyskami fizycznymiźródło
-mx=1
(co prawie nie ma kompresji). Jeśli nie kompresujesz, większość pracy wykonuje dysk twardy. Jeśli ustawisz-mx=9
procesory, naprawdę musisz pracować, aby skompresować plik. Musiałbym spróbować, ale w zależności od wąskiego gardła (HDD lub procesor) może być lepiej lub gorzej.-mmt=off
jest szybsze nawet z-m0=lzma2 -mx=5
. (Bez-mmt=off
: rzeczywistych 1m27.811s, 2m4.976s użytkowników, sys 0m3.729s . Z-mmt=off
: rzeczywistych 1m18.896s, 1m17.160s użytkowników, sys 0m1.661s )Wszystkie algorytmy kompresji, których ostatnio używałem (ZIP, RAR, 7z, tar / bzip2) są związane z wejściem / wyjściem, a nie z procesorem. Oglądanie MenuMeters na moim laptopie Mac pokazuje stałą aktywność dysku, ale tylko 50% lub mniej aktywności procesora.
Zatem sposobem na przyspieszenie kompresji / dekompresji jest przyspieszenie dysku. Nie zawsze jest to możliwe.
Moje „rozwiązanie” tego problemu polega na zrobieniu czegoś innego podczas kompresji. :-)
źródło
W mojej firmie pracujemy ze starą wersją 7-zip (4.52 beta) i uruchamiamy następujące polecenie:
Działa to dobrze, ale po uaktualnieniu do nowszej wersji 16.04 (32-bitowej) wydajność ogromnie spadła, więc postanowiłem przywrócić starszą wersję.
źródło
Kolejna mała sztuczka, aby poprawić wydajność, gdy używasz kodu takiego jak ten przykład:
jest, jeśli to możliwe, mieć w tablicy $ ListDir listę katalogów według wielkości, od najmniejszej do największej. Dzieje się tak, ponieważ w każdym cyklu foreach program 7zip tworzy plik tymczasowy, który jest tak duży (lub większy) niż oryginalny, a następnie dodaje do nich nowy plik. Próbowałem z przypadkami, w których istnieją dwa lub więcej katalogów, duży MB i jeden duży wiele GB, a oszczędność czasu jest rzędu kilku minut.
źródło
Domyślam się, że przyspieszenie 7-Zip jest niemożliwe bez ponownego zapisania jego algorytmów kompresji / dekompresji, może istnieć pewien rodzaj ulepszenia, który zwiększa prędkość, ale prawdopodobnie będzie to tylko wzrost o 10 lub 15%, a nie ogromny 50-100% wzrostu, którego szukasz.
źródło