วิธีทำให้ 7-Zip เร็วขึ้น


35

ปกติฉันใช้ WinRAR มากกว่า 7-Zip เพียงเพราะว่ามันเร็วกว่าและมีประสิทธิภาพน้อยกว่าในการบีบอัด ฉันทำการทดสอบสองสามแบบกับไฟล์และขนาดต่างกันเปรียบเทียบการตั้งค่าเริ่มต้น 7-Zip และ WinRAR กับการบีบอัดปกติและการบีบอัดที่ดีที่สุดและในกรณีส่วนใหญ่ WinRAR เร็วกว่า 50% และเร็วกว่าจริง 100% แต่ฉันชอบ FOSS มากกว่านี้ ดังนั้นนี่คือคำถามของฉัน:

  1. มีวิธีในการทำความเร็ว 7-Zip หรือไม่? ฉันต้องการอย่างน้อยก็ให้อยู่ในระดับเดียวกับความเร็วของ WinRAR
  2. มีวิธีสร้างเซ็กเมนต์การกู้คืนใน 7-Zip อย่างที่คุณสามารถทำได้ใน WinRAR หรือไม่? ฉันไม่เห็นเลย แต่ฉันคิดว่ามันน่าจะเป็นบรรทัดคำสั่ง
  3. ฉันทดสอบ WinRAR และ 7-Zip โดยใช้รุ่นเสถียรล่าสุดของแต่ละ (4-dot-something กับ 7-Zip) การบีบอัด 9.x เบต้าเร็วขึ้นอย่างเห็นได้ชัดหรือไม่?

ฉันกำลังพูดถึงเร็วกว่าในการตั้งค่าที่เปรียบเทียบได้ใน WinRAR ไม่ใช่แค่ลดระดับลงเป็นการบีบอัดขั้นต่ำที่เปลือยเปล่า

ถ้าเป็นเรื่องสำคัญฉันใช้ Quad Core Intel i7 720 (1.6 GHz) / (2.8 GHz) พร้อม 4 GB DDR3 RAM และ 7-Zip เวอร์ชั่น 64 บิตและบูตคู่ Debian x64 5.0.4 และ Windows 7 บ้าน.


1
เกี่ยวกับ # 2 - 7-zip ไม่มีความสามารถในการ "กู้คืนเรคคอร์ด" หรือ "ecc" ใด ๆ คุณจะต้องใช้ซอฟต์แวร์บุคคลที่สามเช่น QuickPar / MultiPar หรือ ICE ECC แต่ไม่ใช่ส่วนหนึ่งของการเก็บถาวร
afrazier

คำตอบ:


36

หากคุณได้รับเบต้า 7-Zip 9.13คุณสามารถเปลี่ยนประเภทไฟล์เก็บถาวรเป็น LZMA2 และสามารถใช้เธรดได้มากเท่าที่คุณต้องการแม้ว่าการใช้หน่วยความจำจะเพิ่มขึ้นอย่างน่าอัศจรรย์

ติดตั้งเบต้าคลิกขวาที่สิ่งที่คุณต้องการเก็บถาวรจากนั้นภายใต้เมนู Contect 7-Zip คลิก "เพิ่มลงในการเก็บถาวร ... " และคุณจะได้รับสิ่งที่คล้ายกับหน้าต่างด้านล่าง ทางด้านซ้ายมือภายใต้วิธีการบีบอัดคุณควรพบ "LZMA2" ซึ่งจะช่วยให้คุณเปลี่ยนจำนวนเธรดซึ่งจะเป็นตัวเลือกอีกเล็กน้อย

นี่เป็นโอกาสของการเพิ่มประสิทธิภาพอย่างมหาศาลบนโปรเซสเซอร์ 2 คอร์เนื่องจากมันสามารถปรับให้เข้ากับระบบของคุณได้ดีขึ้นและวิธีการบีบอัดปกติสามารถจัดการเธรดได้สูงสุด 2 เธรดเท่านั้น

"/ 1" ที่คุณเห็นทางด้านขวาของกล่องตัวเลือกจำนวนเธรดในอิมเมจคือจำนวนตัวประมวลผลในระบบของคุณและจำนวนเธรดที่แนะนำ i7 ของฉันเป็นโปรเซสเซอร์ Quad Core แต่มีไฮเปอร์เธรด (ซึ่งจริง ๆ แล้วช่วยได้ที่นี่ btw) ดังนั้นจึงแสดงเป็น "/ 8"

ข้อความแสดงแทน


Anandtech.com ใช้ 7-Zip เพื่อช่วยในการเปรียบเทียบการปรับปรุงประสิทธิภาพที่พบในซีพียูแบบมัลติคอร์และมัลติเธรดซึ่งในทางทฤษฎีแล้วซอฟต์แวร์อื่น ๆ
kmarsh

5
บรรทัดคำสั่งคืออะไรเพื่อเปิดใช้งาน LZMA2
djangofan

@Monkubai: ใน i7 4c-8t ในสำนักงานของฉันฉันไม่สามารถรับ 7-zip ที่ทำงานเต็ม 8-core ในโหมด LZMA2 ไม่ว่าจะตั้งค่าแบบไหน วิธีการเดียวที่อนุญาตให้รัน 8 เธรดทั้งหมดกำลังใช้อัลกอริทึม BZip2 (จากเมนูแบบเลื่อนลง) ซึ่งมีอัตราส่วนการบีบอัดที่ต่ำกว่า
Edward

@Edward คุณกำลังใช้เวอร์ชันอะไรอยู่ ในวันที่ 9.20 ถ้าฉันเลือก lzma2 จากรายการนั้นฉันจะได้รับตัวเลือกในการใช้งานได้ถึง 8 แกน
Mokubai

2
@Mokubai 9.20 เวอร์ชั่นอย่างเป็นทางการ และไม่มีอะไรผิดปกติกับ UI กราฟิกมันยังคงแสดงพารามิเตอร์ 8/8 cores ในแผงการตั้งค่า แต่เมื่อประมวลผลมันใช้จริงเพียง 20% cpu ฉันทำการวิจัยอย่างรวดเร็วใน SU สำหรับปัญหานี้ แต่ยังไม่ได้หาสาเหตุของสิ่งแปลกประหลาดนั้น เพิ่งรู้ว่าถ้าฉันใช้ command line 7z กับพารามิเตอร์เช่น -m0 = lzma2 -mmt = 8 การบีบอัด ultilizes ~ 100% CPU แต่เมื่อฉันเปลี่ยนไปใช้ GUI มันจะกลับสู่โหมดเธรดเดี่ยวหรืออะไรทำนองนั้น ... ซึ่ง ใช้ประโยชน์จาก CPU อย่างไม่มีประสิทธิภาพ (<20%)
Edward

31

เนื่องจากแต่ละเธรดดูเหมือนว่าจะบีบอัดไฟล์หลายไฟล์ในเวลาเดียวกันสิ่งที่ดีที่สุดที่คุณสามารถทำได้เพื่อเพิ่มประสิทธิภาพของงานซิปขนาดใหญ่มากคือการตั้งค่าเธรดเป็น 1 เพื่อให้แน่ใจว่าฮาร์ดไดรฟ์ของคุณจะค้นหาทีละไฟล์

เราปรับปรุงประสิทธิภาพในทุกขั้นตอนการสำรองข้อมูล zip รายวันของเราโดยเพิ่ม-mmt=offลงในบรรทัดคำสั่ง 7-zip การสำรองข้อมูลของเรา "visual SVN repository" ซึ่งทำจากไฟล์ขนาดเล็กหลายไฟล์ใช้เวลาประมาณ 50 ถึง 60 นาที

ด้วย-mmt=offตอนนี้เรามักจะทำในเวลาน้อยกว่าห้านาที! และในช่วงเวลา 50 นาทีเซิร์ฟเวอร์ทั้งหมดของเราช้ามากเนื่องจากฮาร์ดไดรฟ์กำลังค้นหา ตอนนี้ทุกอย่างยังคงเร็วมากในช่วงห้านาที

สำหรับทุกสิ่งที่คุณทำบนเครื่องกิจกรรมฮาร์ดไดรฟ์จะช้ากว่าความจุ CPU ของคุณเสมอ คุณสามารถเพิ่มประสิทธิภาพของดิสก์ได้โดยการปิดใช้งานกิจกรรมแบบขนานและตรวจสอบให้แน่ใจว่าฮาร์ดไดรฟ์อ่าน (และเขียน) ไฟล์ของคุณทีละไฟล์ตามลำดับ

นอกจากนี้ควรอ่านจาก disk1 และเขียน ZIP ของคุณไปที่ disk2 เนื่องจากส่วนหัวฟิสิคัลไม่ย้ายจากอ่านเป็นเขียน

บรรทัดตัวอย่างเพื่อรับความเร็วสูงสุดของ ZIP ในขณะที่รักษาประสิทธิภาพของเครื่อง:

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

D:และT:เป็นดิสก์ทางกายภาพที่แตกต่างกัน 2 แบบ


5
น่าแปลกใจที่นี่ตรงข้ามกับคำตอบที่แนะนำ แต่ถูกต้องจริง ฉันเพิ่งทำการดำเนินการเก็บถาวรไปจาก 12 ชั่วโมงลงไป 2 โดยเปลี่ยนเป็นการใช้เธรดเดียว
N Jones

2
จริง มันก็ใช้ได้กับฉันเช่นกัน อาจเป็นเรื่องสมเหตุสมผลเพราะเขาใช้-mx=1(ซึ่งแทบจะไม่มีการบีบอัด) หากคุณไม่บีบอัดงานส่วนใหญ่จะทำโดย HDD หากคุณตั้งค่า-mx=9ตัวประมวลผลจำเป็นต้องใช้จริงๆในการบีบอัดไฟล์ ฉันต้องลอง แต่ขึ้นอยู่กับว่าปัญหาคอขวดคืออะไร (HDD หรือ CPU) มันอาจจะดีกว่าหรือแย่กว่านั้นก็ได้
Diego Jancic

9
คำตอบนี้เฉพาะเจาะจงมากกับเทคโนโลยีที่มีอายุมากขึ้น อาจไม่มีประโยชน์ที่จะลองใช้ SSD เพราะเวลาค้นหาจะต่ำกว่านี้มาก IOPS แบบสุ่มมีโอกาสน้อยที่จะเป็นคอขวด กรณีของคุณค่อนข้างพิเศษเพราะคุณทำการบีบอัดน้อยมาก โดยทั่วไปคุณกำลังทำสำเนาไฟล์ ใช่แล้วการเข้าถึงลำดับต่อเนื่องใน HD ที่หมุนอยู่นั้นก็ชัดเจนว่าเป็นผู้ชนะ 7zip usecases ทั่วไปน่าจะเป็น CPU ที่ถูกผูกไว้ไม่ใช่ IO ที่ถูกผูกไว้ สำหรับสิ่งนั้นการใช้คอร์ CPU ทั้งหมดจึงเป็นสิ่งจำเป็น แต่สำหรับผู้ที่อยู่ในสถานการณ์เดียวกันคำแนะนำของคุณมีค่ามาก
dss539

1
ใช้เป็นเร็วขึ้นแม้จะมี-mmt=off -m0=lzma2 -mx=5(ไม่รวม-mmt=off: 1m27.811s จริง 2m4.976s ผู้ใช้ 0m3.729s SYS . ด้วย-mmt=off: 1m18.896s จริง 1m17.160s ผู้ใช้ SYS 0m1.661s )
ostrokach

ดูเหมือนว่าฉันจะช้ากว่ามากในการลดเธรดเป็น 1 ด้วย 1 เธรดสำหรับ 20 GB ของไฟล์มันถูกประมวลผลด้วยความเร็วประมาณ 2 MB / วินาที ด้วย 16 เธรดมันกำลังประมวลผลที่ความเร็วประมาณ 16 MB / วินาที
Lightyear Buzz

0

อัลกอริทึมการบีบอัดทั้งหมดที่ฉันใช้ล่าสุด (ZIP, RAR, 7z, tar / bzip2) เป็น I / O ที่ถูกผูกไว้ไม่ใช่ CPU ที่ถูกผูกไว้ การดู MenuMeters บนแล็ปท็อป Mac ของฉันแสดงกิจกรรมของดิสก์อย่างต่อเนื่อง แต่มี CPU เพียง 50% หรือน้อยกว่า

ดังนั้นวิธีการเพิ่มความเร็วในการบีบอัด / คลายการบีบอัดคือการเพิ่มความเร็วให้กับดิสก์ของคุณ มันเป็นไปไม่ได้เสมอไป

"ทางออก" ของฉันสำหรับสิ่งนี้คือการทำอย่างอื่นในขณะที่ฉันกำลังบีบอัดบางสิ่งบางอย่าง :-)


2
หากดิสก์ I / O เป็นปัญหาของ Matt ก็หมายความว่า WinRAR สามารถอ่านจากดิสก์ได้เร็วกว่า 7Zip บนระบบของเขา ... นั่นฟังดูไม่น่าสำหรับฉัน
foraidt

1
เป็นไปได้ว่า WinRAR ใช้ดิสก์ I / O ที่ชาญฉลาดกว่า ฉันรู้ว่าซิปของ Info-ZIP ถูกขัดขวางโดยบัฟเฟอร์ I / O ขนาดเล็กของมัน แต่ใช่มันอาจเป็นความแตกต่างระหว่างอัลกอริธึมการบีบอัด
chrish

7z ไม่ใช่ I / O-bound แน่นอนแม้ในโหมดรวดเร็ว
Sarge Borsch

วิธีการส่วนใหญ่ที่คุณอธิบายไว้ไม่ได้บีบอัดแบบขนานดังนั้นจึงใช้ CPU เพียง 1 คอร์ดังนั้นจึงใช้กับเครื่อง 2 คอร์ที่คุณได้รับ 50% ฉันกลัวว่า CPU จะผูกไว้กับ mac ของคุณไม่ใช่ IO ผูกไว้และ mac ส่วนใหญ่มี SSD ที่ไม่ได้รับผลกระทบจากการค้นหาดิสก์ 7z สามารถบีบอัดแบบขนานหากคุณเลือกตัวเลือกที่ต้องการ (tar, zip, bzip, gzip, xs โดยทั่วไปไม่ได้ทำ)
มาร์ติน

0

ใน บริษัท ของฉันเรากำลังทำงานกับ 7-zip (4.52 เบต้า) เวอร์ชันเก่าและเรากำลังเรียกใช้คำสั่งต่อไปนี้:

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

มันใช้งานได้ดี แต่หลังจากเพิ่งอัพเกรดเป็นเวอร์ชั่นใหม่ 16.04 (32 บิต) ประสิทธิภาพก็ลดลงอย่างมากดังนั้นฉันจึงตัดสินใจปรับลดรุ่นเป็นรุ่นเก่า


0

เคล็ดลับอีกเล็กน้อยที่จะปรับปรุงประสิทธิภาพเมื่อคุณใช้รหัสเช่นตัวอย่างนี้:

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

ถ้าเป็นไปได้มีอยู่ในอาร์เรย์ $ ListDir ที่แสดงรายการไดเรกทอรีตามขนาดตั้งแต่ขนาดเล็กที่สุดไปจนถึงใหญ่ที่สุด สิ่งนี้เกิดขึ้นเพราะในแต่ละวงรอบ 7eip แต่ละรอบจะสร้างไฟล์ชั่วคราวที่มีขนาดใหญ่ (หรือใหญ่กว่า) กว่าไฟล์ต้นฉบับจากนั้นเพิ่มไฟล์ใหม่ภายในไฟล์ ฉันได้ลองกับกรณีที่มีสองหรือมากกว่าไดเรกทอรีใหญ่บาง MB และหนึ่งใหญ่มาก GB และประหยัดเวลาในการสั่งซื้อหลายนาที


ฉันเชื่อว่าสิ่งนี้ใช้ได้เฉพาะเมื่อเพิ่มไฟล์ในไฟล์เก็บถาวรที่มีอยู่ เมื่อเพิ่มหลายไฟล์พร้อมกันจะใช้ไฟล์ชั่วคราวเพียงไฟล์เดียว เมื่อสร้างไฟล์เก็บถาวรใหม่ไฟล์ชั่วคราวจะไม่ถูกนำมาใช้เลย
Daniel B

-1

ฉันเดาว่าการเร่งความเร็ว 7-Zip เป็นไปไม่ได้โดยไม่ต้องเขียนอัลกอริธึมการบีบอัด / การบีบอัดซ้ำอีกครั้งอาจมีการบิดบางชนิดที่เพิ่มความเร็ว แต่อาจจะเพิ่มขึ้นเพียง 10 หรือ 15% เพิ่มขึ้น 50-100% ที่คุณกำลังมองหา


6
ไม่จริงเลย คุณสามารถเร่งความเร็ว 7-zip ได้อย่างหนาแน่นเพียงแค่เปลี่ยนการตั้งค่าเริ่มต้น ในความเป็นจริงการตั้งค่าเริ่มต้นจะถูกปรับให้มีขนาดไฟล์เล็กที่สุด (และอัลกอริทึมการบีบอัดที่ช้าที่สุด - BZip2) การเปลี่ยนเป็นชุดบีบอัด ZIP และ LZMA ตั้งค่าเป็น "เร็วที่สุด" ทำให้เร็วขึ้นอย่างมาก
NickG
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.