J'utilise normalement WinRAR over 7-Zip simplement parce que c'est plus rapide et seulement un peu moins efficace avec la compression. J'ai fait quelques tests sur différents types et tailles de fichiers en comparant les paramètres par défaut de 7-Zip et WinRAR sur leur compression normale et leur meilleure compression. Dans de nombreux cas, WinRAR était 50% plus rapide et parfois même 100% plus rapide. Mais j'aime davantage les logiciels libres. Donc, voici mes questions:
Je parle de plus rapide à un paramètre comparable dans WinRAR, pas seulement en réduisant au minimum la compression.
Si cela compte, j'utilise un processeur Intel i7 720 quadri cœur (1,6 GHz)/(2,8 GHz) avec 4 Go de RAM DDR3, ainsi que la version 64 bits de 7-Zip et Debian x64 5.0.4 à double amorçage et Windows 7. Accueil.
Si vous obtenez le 7-Zip 9.13 beta , vous pouvez changer le type d'archive en LZMA2 et pouvoir ainsi utiliser autant de threads que vous le souhaitez, bien que le l'utilisation de la mémoire augmente de façon phénoménale.
Installez la version bêta, cliquez avec le bouton droit de la souris sur les éléments que vous souhaitez archiver, puis sous le menu de menu 7-Zip, cliquez sur "Ajouter aux archives ..." et vous obtiendrez quelque chose de similaire à la fenêtre ci-dessous. Sur le côté gauche sous la méthode de compression, vous devriez trouver "LZMA2" qui vous permettra de changer le nombre de threads qui sera une option un peu plus bas.
Cela permet d’augmenter considérablement les performances sur> 2 processeurs principaux, car il peut être mieux adapté à votre système et la méthode de compression normale ne peut gérer que 2 threads maximum.
Le "/ 1" que vous voyez à droite du champ de sélection du nombre de threads dans l'image correspond au nombre de processeurs de votre système et donc au nombre recommandé de threads. Mon i7 est un processeur quad core, mais hyperthreading (qui aide vraiment ici), donc il affiche "/ 8"
Comme chaque thread semble compresser plusieurs fichiers en même temps, la meilleure chose à faire pour améliorer les performances des travaux Zip très volumineux consiste à définir les threads sur 1, afin de vous assurer que votre disque dur recherchera un fichier à la fois.
Nous améliorons les performances de toutes nos procédures de sauvegarde Zip quotidiennes en ajoutant -mmt=off
à la ligne de commande 7-Zip. Notre sauvegarde du "référentiel SVN visuel", composée de plusieurs petits fichiers, prenait entre 50 et 60 minutes.
Avec -mmt=off
, nous y arrivons toujours en moins de cinq minutes! Et, pendant ces 50 minutes, tous nos serveurs étaient très lents à cause de la recherche de disques durs. Maintenant, tout reste très rapide pendant ces cinq minutes.
Pour tout ce que vous faites sur une machine, l'activité du disque dur sera toujours plus lente que la capacité de votre processeur. Vous pouvez augmenter les performances du disque en désactivant les activités parallèles et en vous assurant que le disque dur lit (et écrit) vos fichiers l'un après l'autre en série.
En outre, il est préférable de lire à partir du disque1 et d'écrire votre fichier Zip sur le disque2, car la tête physique ne se déplace pas de lecture à écriture.
Exemple de ligne pour obtenir la vitesse Zip maximale tout en maintenant les performances de votre machine
start "" /wait /belownormal c:\Progra~1\7-Zip\7z.exe a -tzip -mx=1 -mmt=off t:\backup.Zip d:\folderToBackup\*
D:
et T:
sont 2 disques physiques différents
J'imagine que l'accélération de 7-Zip est impossible sans réécrire ses algorithmes de compression/décompression, il peut exister une sorte de Tweak qui augmente la vitesse, mais ce ne sera probablement qu'une augmentation de 10 ou 15%, pas une énorme 50-100% d'augmentation que vous cherchez.
Une autre petite astuce pour améliorer les performances lorsque vous utilisez un code comme celui-ci:
$7Zip = "$env:ProgramFiles\7-Zip\7z.exe"
set-alias sz $7Zip
$FileZip = "$DiscoZip\temp\$TempFile"
foreach ($DirData in $ListDir) { $out7z = (sz a $FileZip $DirData) }
si possible, dans le tableau, $ ListDir répertorie les répertoires par taille, du plus petit au plus grand. Cela se produit car, à chaque cycle, 7Zip crée un fichier temporaire aussi volumineux (ou plus gros) que le fichier d'origine, puis y ajoute un nouveau fichier. J'ai essayé avec des cas dans lesquels il y a deux répertoires ou plus de grande taille, quelques Mo et un grand nombre de Go, et le gain de temps est de l'ordre de plusieurs minutes.
Dans mon entreprise, nous travaillons avec une ancienne version de 7-Zip (version 4.52 bêta) et nous exécutons la commande suivante:
"C:\Program Files\7-Zip\7z.exe" a -mx7 -mmt -sfx -xr!*.<exclude_extension> <destination>.exe <source_directory>\*
Cela fonctionne bien, mais après une mise à niveau vers la nouvelle version 16.04 (32 bits), les performances ont considérablement baissé. J'ai donc décidé de revenir à l'ancienne version.
Tous les algorithmes de compression que j'ai récemment utilisés (Zip, RAR, 7z, tar/bzip2) sont liés à l'E/S et non au processeur. Regarder MenuMeters sur mon ordinateur portable Mac montre une activité de disque constante, mais seulement une activité de 50% ou moins du processeur.
Ainsi, le moyen d'accélérer la compression/décompression consiste à accélérer votre disque. Ce n'est pas toujours possible.
Ma "solution" consiste simplement à faire autre chose pendant que je compresse quelque chose. :-)