LZ4 เป็นอัลกอริธึมการบีบอัดแบบไม่สูญเสียข้อมูล ซึ่งให้ความเร็วการบีบอัด > 500 MB/s ต่อคอร์ สามารถปรับขนาดได้ด้วย CPU แบบมัลติคอร์ มีตัวถอดรหัสที่รวดเร็วเป็นพิเศษ ด้วยความเร็วหลาย GB/s ต่อคอร์ โดยทั่วไปจะถึงขีดจำกัดความเร็ว RAM ในระบบมัลติคอร์
สามารถปรับความเร็วได้แบบไดนามิก โดยเลือกปัจจัย "การเร่งความเร็ว" ซึ่งจะแลกอัตราส่วนการบีบอัดเพื่อให้ได้ความเร็วที่เร็วขึ้น ในอีกด้านหนึ่ง LZ4_HC มีอนุพันธ์ในการบีบอัดสูง แลกเวลา CPU เพื่อปรับปรุงอัตราส่วนการบีบอัด ทุกเวอร์ชันมีความเร็วในการคลายการบีบอัดเท่ากัน
LZ4 ยังเข้ากันได้กับการบีบอัดพจนานุกรม ทั้งในระดับ API และ CLI สามารถนำเข้าไฟล์อินพุตใดๆ ในรูปแบบพจนานุกรมได้ แม้ว่าจะใช้เพียง 64KB สุดท้ายเท่านั้น ความสามารถนี้สามารถใช้ร่วมกับ Zstandard Dictionary Builder เพื่อปรับปรุงประสิทธิภาพการบีบอัดไฟล์ขนาดเล็กได้อย่างมาก
ไลบรารี LZ4 จัดทำเป็นซอฟต์แวร์โอเพ่นซอร์สโดยใช้ลิขสิทธิ์ BSD 2-Clause
สาขา | สถานะ |
---|---|
ผู้พัฒนา |
เกณฑ์มาตรฐานใช้ lzbench จาก @inikep ที่คอมไพล์ด้วย GCC v8.2.0 บน Linux 64 บิต (Ubuntu 4.18.0-17) ระบบอ้างอิงใช้ CPU Core i7-9700K @ 4.9GHz (พร้อมเทอร์โบบูสต์) เกณฑ์มาตรฐานประเมินการบีบอัดของ Silesia Corpus อ้างอิงในโหมดเธรดเดียว
คอมเพรสเซอร์ | อัตราส่วน | การบีบอัด | การบีบอัด |
---|---|---|---|
เมมปี้ | 1.000 | 13700 เมกะไบต์/วินาที | 13700 เมกะไบต์/วินาที |
ค่าเริ่มต้น LZ4 (v1.9.0) | 2.101 | 780 เมกะไบต์/วินาที | 4970 เมกะไบต์/วินาที |
LZO2.09 | 2.108 | 670 เมกะไบต์/วินาที | 860 เมกะไบต์/วินาที |
QuickLZ 1.5.0 | 2.238 | 575 เมกะไบต์/วินาที | 780 เมกะไบต์/วินาที |
รวดเร็ว 1.1.4 | 2.091 | 565 เมกะไบต์/วินาที | 1950 เมกะไบต์/วินาที |
มาตรฐาน 1.4.0 -1 | 2.883 | 515 เมกะไบต์/วินาที | 1380 เมกะไบต์/วินาที |
LZF เวอร์ชัน 3.6 | 2.073 | 415 เมกะไบต์/วินาที | 910 เมกะไบต์/วินาที |
zlib ยุบ 1.2.11 -1 | 2.730 | 100 เมกะไบต์/วินาที | 415 เมกะไบต์/วินาที |
LZ4 HC -9 (v1.9.0) | 2.721 | 41 เมกะไบต์/วินาที | 4900 เมกะไบต์/วินาที |
zlib ยุบ 1.2.11 -6 | 3.099 | 36 เมกะไบต์/วินาที | 445 เมกะไบต์/วินาที |
LZ4 ยังเข้ากันได้และปรับให้เหมาะสมสำหรับโหมด x32 ( -mx32
) ซึ่งให้ประสิทธิภาพความเร็วเพิ่มเติม
make
make install # this command may require root permissions
Makefile
ของ LZ4 รองรับรูปแบบ Makefile มาตรฐาน รวมถึงการติดตั้งแบบเป็นขั้น การเปลี่ยนเส้นทาง หรือการกำหนดคำสั่งใหม่ มันเข้ากันได้กับบิลด์แบบขนาน ( -j#
)
คุณสามารถดาวน์โหลดและติดตั้ง LZ4 ได้โดยใช้ตัวจัดการการพึ่งพา vcpkg:
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg.exe install lz4
พอร์ต LZ4 ใน vcpkg ได้รับการปรับปรุงให้ทันสมัยโดยสมาชิกทีม Microsoft และผู้สนับสนุนชุมชน หากเวอร์ชันล้าสมัย โปรดสร้างปัญหาหรือดึงคำขอบนที่เก็บ vcpkg
รูปแบบการบีบอัดบล็อก LZ4 แบบ Raw มีรายละเอียดอยู่ภายใน lz4_Block_format
ไฟล์หรือสตรีมข้อมูลที่มีความยาวตามอำเภอใจจะถูกบีบอัดโดยใช้บล็อกหลายบล็อกสำหรับข้อกำหนดในการสตรีม บล็อกเหล่านี้ถูกจัดระเบียบเป็นเฟรม ซึ่งกำหนดเป็น lz4_Frame_format LZ4 เวอร์ชันที่ใช้งานร่วมกันได้จะต้องเคารพรูปแบบเฟรมด้วย
นอกเหนือจากแหล่งอ้างอิง C แล้ว ผู้ร่วมให้ข้อมูลจำนวนมากได้สร้างเวอร์ชันของ lz4 ในหลายภาษา (Java, C#, Python, Perl, Ruby ฯลฯ) รายการพอร์ตต้นทางที่รู้จักจะถูกเก็บรักษาไว้ในหน้าแรกของ LZ4
การแจกแจงส่วนใหญ่จะรวมเข้ากับตัวจัดการแพ็คเกจซึ่งช่วยให้สามารถติดตั้งทั้งไลบรารี liblz4
และอินเตอร์เฟสบรรทัดคำสั่ง lz4
ได้อย่างง่ายดาย