สคริปต์ง่ายๆ เหล่านี้วัดประสิทธิภาพไลบรารีการบีบอัด zlib ที่แตกต่างกันสำหรับคอมเพรสเซอร์แบบขนาน pigz การบีบอัดข้อมูลแบบขนานสามารถใช้หลายคอร์ที่มีอยู่ในคอมพิวเตอร์สมัยใหม่เพื่อบีบอัดข้อมูลอย่างรวดเร็ว เทคนิคนี้สามารถใช้ร่วมกับ CloudFlare zlib ซึ่งจะเร่งการบีบอัดโดยใช้คุณสมบัติอื่นๆ ของฮาร์ดแวร์สมัยใหม่ ที่นี่ ฉันได้ดัดแปลงสคริปต์เพื่อประเมินการบีบอัด .gz ของภาพสมองในรูปแบบ NIfTI เป็นเรื่องปกติที่เครื่องมืออย่าง AFNI และ FSL จะบันทึกอิมเมจ NIfTI โดยใช้การบีบอัด gzip (ไฟล์ .nii.gz) วิธี MRI สมัยใหม่ เช่น มัลติแบนด์ทำให้ได้ชุดข้อมูลจำนวนมาก จึงต้องใช้เวลามากในการบีบอัดภาพเหล่านี้
กราฟด้านล่างแสดงประสิทธิภาพของ pigz เทียบกับ pigz แบบเธรดเดียวที่เป็นค่าเริ่มต้น ดังนั้น '1' จึงแสดงถึงประสิทธิภาพที่เทียบเท่ากัน ประสิทธิภาพจะแสดงสำหรับระดับการบีบอัด 3 ระดับ: เร็ว (3, พื้นฐาน 35 วินาที), ค่าเริ่มต้น (6, 50 วินาที) และช้า (9, 183 วินาที) แกนนอนแสดงจำนวนเธรดที่ใช้กับการบีบอัด ที่ระดับการบีบอัดที่ต่ำกว่า (1) เครื่องมือทั้งหมดจะค่อนข้างเร็ว โดยการอ่านและการเขียนจากดิสก์จะเป็นปัจจัยจำกัดอัตรา ที่ระดับการบีบอัดที่สูงขึ้น การรวมกันของหลายเธรดและการปรับปรุง CloudFlare จะเร่งประสิทธิภาพได้อย่างมากเมื่อเทียบกับ gzip เริ่มต้น ระบบทดสอบคือ Intel Xeon Platinum 8260 แบบ 24 คอร์ (48 เธรด):
กราฟถัดไปแสดงแต่ละเครื่องมือโดยใช้จำนวนเธรดที่ต้องการบนคอมพิวเตอร์แบบ 4 คอร์ (8 เธรด) เพื่อบีบอัดคลังข้อมูล Silesia ยอดนิยม pigz ทุกเวอร์ชันมีประสิทธิภาพเหนือกว่า gzip แบบเธรดเดี่ยวของระบบ จะเห็นได้ว่ารูปแบบ zstd ที่ทันสมัยครอบงำ gzip ที่เก่ากว่าและง่ายกว่า gzip ถูกนำมาใช้อย่างกว้างขวางในหลายสาขา (เช่น ในการถ่ายภาพสมอง ซึ่งใช้สำหรับ NIfTI, NRRD และ AFNI) ความเรียบง่ายของรูปแบบ gzip หมายความว่าเป็นเรื่องง่ายสำหรับนักพัฒนาที่จะรวมการสนับสนุนไว้ในเครื่องมือของพวกเขา ดังนั้น gzip จึงมีบทบาทสำคัญในชุมชน อย่างไรก็ตาม รูปแบบสมัยใหม่ที่ออกแบบมาสำหรับฮาร์ดแวร์สมัยใหม่และการใช้ประโยชน์จากเทคนิคใหม่ๆ มีประโยชน์โดยธรรมชาติ
สคริปต์ 5decompress.sh
ช่วยให้เราสามารถเปรียบเทียบความเร็วของการบีบอัดข้อมูลได้ การบีบอัดจะเร็วกว่าการบีบอัด อย่างไรก็ตาม การบีบอัด gzip ไม่สามารถใช้ประโยชน์จากหลายเธรดได้ และโดยทั่วไปจะช้ากว่ารูปแบบการบีบอัดสมัยใหม่ ในการทดสอบนี้ เครื่องมือ gz ทั้งหมดจะขยายขนาดข้อมูลนั้น ในทางตรงกันข้าม bzip2 และ ztd กำลังขยายขนาดข้อมูลที่ถูกบีบอัดให้มีขนาดเล็กลง ความเร็วเป็นเมกะไบต์ต่อวินาทีคำนวณตามขนาดที่คลายการบีบอัด เป็นเรื่องปกติที่การบีบอัดแบบกะทัดรัดจะใช้อัลกอริธึมที่ซับซ้อนมากขึ้น ดังนั้นการเปรียบเทียบระหว่างรูปแบบเหล่านี้จึงเป็นเรื่องที่ท้าทาย ไม่ว่าในบรรดาเครื่องมือ gz zlib-ng จะแสดงประสิทธิภาพการบีบอัดที่เหนือกว่า:
ความเร็ว (เมกะไบต์/วินาที) | pigz-CF | หมู | pigz-Sys | gzip | pbzip2 | pbzip2 |
---|---|---|---|---|---|---|
การบีบอัด | 278 | 300 | 274 | 244 | 122 | 236 |
รันการวัดประสิทธิภาพด้วยคำสั่งดังต่อไปนี้:
1compile.sh
2test.sh
5decompress.sh
1compile.sh
จะดาวน์โหลดและสร้างสำเนาของ pigz โดยใช้ตัวแปร zlib ที่แตกต่างกัน (ระบบ, CloudFlare, ng) นอกจากนี้ยังดาวน์โหลดรูปภาพตัวอย่างเพื่อทดสอบการบีบอัด โดยเฉพาะตัวอย่างการสแกน MRI ซึ่งจะถูกคัดลอกไปยัง corpus
โฟลเดอร์ คุณ ต้อง รันสคริปต์นี้หนึ่งครั้งก่อนสคริปต์อื่น สคริปต์อื่นๆ ทั้งหมดสามารถรันแยกจากกันได้2test.sh
เปรียบเทียบความเร็วของ pigz เวอร์ชันต่างๆ และ gzip แบบเธรดเดี่ยวของระบบ คุณสามารถแทนที่ไฟล์ในโฟลเดอร์ corpus
ด้วยตัวแทนชุดข้อมูลของคุณได้3slowtest.sh
ดาวน์โหลด Silesia corpus และทดสอบความเร็วการบีบอัด คลังข้อมูลนี้ได้รับความนิยม: เกณฑ์มาตรฐาน 1, เกณฑ์มาตรฐาน 2, เกณฑ์มาตรฐาน 34verify.sh
ทดสอบการบีบอัดและคลายการบีบอัดของแต่ละวิธี เพื่อให้มั่นใจว่าจะสามารถจัดเก็บข้อมูลได้โดยไม่สูญเสีย5decompress.sh
ประเมินความเร็วในการคลายการบีบอัด โดยทั่วไป รูปแบบ gzip จะบีบอัดได้ช้า แต่จะขยายขนาดได้เร็ว (โดยเฉพาะเมื่อเปรียบเทียบกับรูปแบบที่พัฒนาในเวลาเดียวกัน) อย่างไรก็ตาม การบีบอัด gzip นั้นช้าเมื่อเทียบกับ zstd สมัยใหม่ นอกจากนี้ แม้ว่าการบีบอัด gzip จะได้ประโยชน์จากการประมวลผลแบบขนาน แต่การบีบอัดกลับไม่ได้ประโยชน์ คุณลักษณะที่สำคัญของสคริปต์นี้คือ zlib แต่ละเวอร์ชันมีส่วนสนับสนุนไฟล์บีบอัดไปยังคลังข้อมูลการทดสอบ จากนั้นแต่ละเครื่องมือจะได้รับการทดสอบบนคลังข้อมูลแบบเต็มนี้ เพื่อให้แน่ใจว่าเรากำลังเปรียบเทียบงานที่คล้ายคลึงกัน เนื่องจากวิธีการบีบอัด zlib บางอย่างอาจสร้างไฟล์ขนาดเล็กลงโดยมีต้นทุนในการสร้างไฟล์ที่ขยายขนาดได้ช้ากว่า6speed_size.sh
เปรียบเทียบ pigz รุ่นต่างๆ กับ gzip, zstd และ bzip2 สำหรับการบีบอัดคลังข้อมูล Silesia เครื่องมือแต่ละชิ้นได้รับการทดสอบในระดับการบีบอัดที่แตกต่างกัน แต่จะใช้จำนวนเธรดที่ต้องการเสมอ blocksize
ที่สอดคล้องกับจำนวนเธรดสำหรับการบีบอัด พื้นที่เก็บข้อมูลนี้มีสคริปต์ test_mgzip.py
เพื่อประเมินเครื่องมือนี้