Cara membuat 7-Zip lebih cepat

35

Saya biasanya menggunakan WinRAR lebih dari 7-Zip hanya karena lebih cepat dan hanya sedikit kurang efisien dengan kompresi. Saya melakukan beberapa tes pada berbagai jenis file dan ukuran membandingkan pengaturan default 7-Zip dan WinRAR pada kompresi normal dan kompresi terbaik mereka, dan dalam banyak kasus WinRAR 50% lebih cepat dan dalam beberapa itu sebenarnya 100% lebih cepat. Tapi, saya lebih suka FOSS. Jadi inilah pertanyaanku:

  1. Apakah ada cara untuk membuat 7-Zip mempercepat? Saya ingin setidaknya setara dengan kecepatan WinRAR
  2. Apakah ada cara untuk membuat segmen pemulihan di 7-Zip seperti yang Anda bisa di WinRAR? Saya tidak melihat apa-apa, tapi saya kira itu bisa menjadi hal baris perintah.
  3. Saya menguji WinRAR dan 7-Zip menggunakan versi stabil terbaru masing-masing (4-dot-sesuatu dengan 7-Zip). Apakah rilis 9.x beta terasa lebih cepat pada kompresi?

Saya berbicara tentang lebih cepat pada pengaturan yang sebanding di WinRAR, tidak hanya menurunkan ke kompresi minimum.

Jika itu penting, saya menggunakan quad core Intel i7 720 (1,6 GHz) / (2,8 GHz) dengan 4 GB DDR3 RAM, dan versi 64-bit 7-Zip, dan dual-boot Debian x64 5.0.4 dan Windows 7 Rumah.

Kefka
sumber
1
Mengenai # 2 - 7-zip saat ini tidak memiliki kemampuan "catatan pemulihan" atau "ecc". Anda akan memerlukan perangkat lunak pihak ke-3 seperti QuickPar / MultiPar atau ICE ECC, tetapi itu bukan bagian dari arsip.
Afrazier

Jawaban:

36

Jika Anda mendapatkan 7-Zip 9.13 beta, Anda dapat mengubah jenis arsip ke LZMA2 dan dengan demikian dapat menggunakan sebanyak mungkin utas yang Anda inginkan, meskipun penggunaan memori meningkat secara fenomenal.

Instal beta, klik kanan barang yang ingin Anda arsipkan kemudian di bawah menu contek 7-Zip klik "Tambahkan ke arsip ..." dan Anda akan mendapatkan sesuatu yang mirip dengan jendela di bawah ini. Di sisi kiri di bawah Metode Kompresi Anda harus menemukan "LZMA2" yang akan memungkinkan Anda untuk mengubah jumlah utas yang akan menjadi pilihan sedikit lebih jauh ke bawah.

Ini memiliki potensi peningkatan kinerja yang sangat besar pada> 2 prosesor inti karena dapat disesuaikan dengan lebih baik untuk sistem Anda, dan metode kompresi normal hanya dapat menangani maksimum 2 utas.

"/ 1" yang Anda lihat di sebelah kanan jumlah kotak pemilihan utas dalam gambar adalah jumlah prosesor dalam sistem Anda dan dengan demikian jumlah utas yang disarankan. I7 saya adalah prosesor quad core tetapi memiliki hyperthreading (yang sebenarnya membantu di sini btw) sehingga ditampilkan sebagai "/ 8"

teks alternatif

Mokubai
sumber
Anandtech.com telah menggunakan 7-Zip untuk membantu mengukur peningkatan kinerja yang dapat ditemukan di CPU multi-core dan multi-threaded, yang sebaliknya lebih teoretis di sebagian besar perangkat lunak generasi ini.
kmarsh
5
Apa arg baris perintah untuk mengaktifkan LZMA2?
djangofan
@Monkubai: DALAM i7 4c-8t di kantor saya, saya tidak bisa menjalankan 7-zip penuh 8-core dalam mode LZMA2 pengaturan apa pun yang sedang diatur. Hanya metode yang memungkinkannya menjalankan semua 8-thread yang menggunakan algoritma BZip2 (dari menu drop-down) yang memiliki rasio kompresi lebih rendah.
Edward
@Edward versi apa yang Anda gunakan? Pada 9.20 jika saya memilih lzma2 dari daftar itu saya mendapatkan opsi untuk menggunakan hingga 8 core.
Mokubai
2
@Mokubai 9.20 versi resmi. Dan tidak ada yang salah dengan grafis UI, masih menampilkan 8/8 parameter core di panel pengaturan tetapi ketika memprosesnya sebenarnya hanya menggunakan <20% cpu. Saya melakukan riset cepat di SU untuk masalah ini tetapi belum menemukan alasan untuk itu aneh. Ketahuilah bahwa jika saya menggunakan command line 7z dengan parameter seperti -m0 = lzma2 -mmt = 8 maka kompresi akan berubah ~ CPU 100% tapi begitu saya beralih ke GUI, ia kembali ke mode single-thread atau sesuatu seperti itu ... yang memanfaatkan CPU dengan cara yang sangat tidak efisien (<20%).
Edward
31

Karena setiap utas tampaknya mengkompres banyak file sekaligus, hal terbaik yang dapat Anda lakukan untuk meningkatkan kinerja pekerjaan zip yang sangat besar adalah mengatur utas menjadi 1, untuk memastikan bahwa hard drive Anda akan mencari satu file pada satu waktu.

Kami meningkatkan kinerja semua prosedur pencadangan zip harian dengan menambahkan -mmt=offbaris perintah 7-zip. Cadangan kami dari "gudang SVN visual", yang dibuat dari banyak file kecil, membutuhkan waktu antara 50 dan 60 menit.

Dengan -mmt=off, kami sekarang selalu melakukannya dalam waktu kurang dari lima menit! Dan, selama 50 menit ini, semua server kami sangat lambat karena mencari hard drive. Sekarang, semuanya tetap sangat cepat selama lima menit itu.

Untuk semua yang Anda lakukan pada mesin, aktivitas hard drive akan selalu lebih lambat dari kapasitas CPU Anda. Anda dapat meningkatkan kinerja disk dengan menonaktifkan aktivitas paralel dan memastikan bahwa hard drive membaca (dan menulis) file Anda satu per satu secara berurutan.

Juga lebih baik membaca dari disk1 dan menulis ZIP Anda ke disk2, karena kepala fisik tidak bergerak dari baca ke menulis.

Jalur sampel untuk mendapatkan kecepatan ZIP maksimum sambil menjaga kinerja alat berat Anda:

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

D:dan T:ada 2 disk fisik yang berbeda

Frederic Malenfant
sumber
5
Luar biasa bahwa ini adalah kebalikan dari jawaban yang disarankan, tetapi sebenarnya benar. Saya baru saja membuat operasi arsip berubah dari 12 jam menjadi 2 dengan mengubah menggunakan satu utas.
N Jones
2
Benar. Ini juga berhasil bagi saya. Mungkin masuk akal karena dia menggunakan -mx=1(yang hampir tidak ada kompresi). Jika Anda tidak mengompres, sebagian besar pekerjaan dilakukan oleh HDD. Jika Anda mengatur -mx=9prosesor benar-benar perlu bekerja untuk mengompres file. Saya perlu mencobanya, tetapi tergantung pada apa hambatannya (HDD atau CPU), mungkin lebih baik atau lebih buruk.
Diego Jancic
9
Jawaban ini sangat spesifik untuk teknologi penuaan. Mungkin tidak berguna untuk mencoba ini dengan SSD karena waktu pencariannya jauh lebih rendah. IOPS acak lebih kecil kemungkinannya menjadi hambatan. Kasing Anda cukup istimewa karena Anda hanya melakukan sedikit kompresi. Pada dasarnya Anda melakukan copy file. Jadi ya, akses sekuensial pada HD yang berputar jelas merupakan pemenang. Penggunaan khusus 7zip kemungkinan akan terikat CPU, bukan IO terikat. Untuk itu, menggunakan semua core CPU sangat penting. Tetapi bagi mereka yang berada dalam situasi yang sama, saran Anda sangat berharga.
dss539
1
Menggunakan -mmt=offlebih cepat bahkan dengan -m0=lzma2 -mx=5. (Tanpa -mmt=off: real 1m27.811s, pengguna 2m4.976s, sys 0m3.729s . Dengan -mmt=off: real 1m18.896s, pengguna 1m17.160s, sys 0m1.661s )
ostrokach
Tampaknya jauh lebih lambat bagi saya untuk mengurangi utas ke 1. Dengan 1 utas untuk 20 GB file itu diproses dengan kecepatan sekitar 2 MB / detik. Dengan 16 utas, ia memproses sekitar kecepatan 16 MB / detik.
Lightyear Buzz
0

Semua algoritma kompresi yang saya gunakan baru-baru ini (ZIP, RAR, 7z, tar / bzip2) terikat I / O, bukan terikat CPU. Menonton MenuMeters pada laptop Mac saya menunjukkan aktivitas disk yang konstan, tetapi hanya 50% atau kurang aktivitas CPU.

Jadi, cara mempercepat kompresi / dekompresi adalah mempercepat disk Anda. Ini tidak selalu mungkin.

"Solusi" saya untuk ini adalah melakukan sesuatu yang lain sementara saya mengompres sesuatu. :-)

Chrish
sumber
2
Jika disk I / O adalah masalah Matt, itu berarti WinRAR entah bagaimana dapat membaca dari disk lebih cepat dari 7Zip di sistemnya ... Kedengarannya tidak mungkin bagi saya.
foraidt
1
Mungkin WinRAR menggunakan disk I / O yang lebih pintar; Saya tahu zip Info-ZIP terhambat oleh buffer I / O yang sangat kecil. Tapi ya, itu bisa menjadi perbedaan antara algoritma kompresi.
chrish
7z tentu bukan I / O-terikat bahkan dalam mode cepat.
Sarge Borsch
Sebagian besar metode yang Anda jelaskan tidak memampatkan secara paralel sehingga hanya 1 inti dari CPU Anda yang digunakan maka pada mesin 2 inti Anda mendapatkan 50%. Saya takut bahwa CPU terikat pada mac Anda, tidak terikat IO dan sebagian besar mac memiliki SSD yang tidak benar-benar menderita dari pencarian disk. 7z dapat dikompres secara paralel jika Anda memilih opsi untuk melakukannya. (tar, zip, bzip, gzip, xs umumnya tidak)
Martin
0

Di perusahaan saya, kami bekerja dengan versi lama 7-zip (4,52 beta), dan kami menjalankan perintah berikut:

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

Ini berfungsi dengan baik, tetapi setelah hanya ditingkatkan ke versi yang lebih baru 16,04 (32-bit), kinerjanya telah menurun drastis, jadi saya memutuskan untuk menurunkan versi kembali ke versi yang lama.

Dominique
sumber
0

Trik kecil lain untuk meningkatkan kinerja saat Anda menggunakan kode seperti contoh ini:

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

adalah, jika mungkin, ada dalam array $ ListDir mendaftar direktori berdasarkan ukuran, dari yang terkecil ke yang terbesar. Ini terjadi karena pada setiap siklus 7zip membuat file sementara yang sama besar (atau lebih besar) dari yang asli, kemudian menambahkan file baru di dalamnya. Saya telah mencoba dengan kasus-kasus di mana ada dua atau lebih direktori besar beberapa MB dan satu banyak GB dan penghematan waktu dalam urutan beberapa menit.

Max Monterumisi
sumber
Saya percaya ini hanya berlaku ketika menambahkan file ke arsip yang ada. Saat menambahkan beberapa file sekaligus, hanya satu file sementara yang akan digunakan. Saat membuat arsip baru, file sementara tidak akan digunakan sama sekali.
Daniel B
-1

Dugaan saya adalah bahwa mempercepat 7-Zip tidak mungkin tanpa menulis ulang algoritma kompresi / de-kompresi, mungkin ada beberapa jenis tweak yang meningkatkan kecepatan tetapi mungkin hanya akan seperti peningkatan 10 atau 15%, bukan besar-besaran Peningkatan 50-100% yang Anda cari.

Joshkunz
sumber
6
Tidak benar sama sekali. Anda dapat mempercepat 7-zip secara besar-besaran hanya dengan mengubahnya dari pengaturan default. Bahkan pengaturan default disetel untuk ukuran file terkecil (dan algoritma kompresi paling lambat - BZip2). Mengubahnya ke kompresi ZIP dan LZMA diatur ke "Tercepat" membuatnya lebih cepat secara besar-besaran.
NickG