Facebook開源新的壓縮算法,性能超zlib

責(zé)任編輯:editor004

作者: Sergio De Simone

2016-09-06 11:43:48

摘自:INFOQ

近日,F(xiàn)acebook開源了新的壓縮算法Zstandard 1 0。Facebook的基準(zhǔn)測試顯示,在任意壓縮率和壓縮帶寬組合下,Zstandard的性能都要高于zlib。

近日,F(xiàn)acebook開源了新的壓縮算法Zstandard 1.0。據(jù)Facebook工程師Yann Collet和Chip Turner介紹,該算法是少數(shù)能夠在性能和效率方面超過zlib的壓縮算法之一,而后者當(dāng)前是“占統(tǒng)治地位的標(biāo)準(zhǔn)”。Facebook Zstandard利用了Collet之前所做的工作。Collet是LZ4的作者,他在2015年發(fā)布了其新算法的第一個(gè)版本。

Facebook的基準(zhǔn)測試顯示,在任意壓縮率和壓縮帶寬組合下,Zstandard的性能都要高于zlib。

 

特別地,當(dāng)使用標(biāo)準(zhǔn)無損壓縮語料庫Silesia時(shí),相比zlib,Zstandard展示了出色的性能:

在壓縮率相同的情況下,它的速度快大約3到5倍; 在壓縮速度相同的情況下,它生成的文件小10%到15%; 不管壓縮率多大,它解壓縮的速度都要快2倍; 它的最大壓縮率要高許多(大約為4比3.15)。

Zstandard使用了有限狀態(tài)熵,并以Jarek Duda在熵編碼非對(duì)稱數(shù)字系統(tǒng)(ANS)方面的工作為基礎(chǔ)。ANS的目標(biāo)是“避免在壓縮速度和壓縮率之間進(jìn)行取舍”,它既可以用于精確編碼,也可以用于快速編碼,并且支持?jǐn)?shù)據(jù)加密。但是,從根本上講,Zstandard之所以提供了更好的性能是因?yàn)樗亩囗?xiàng)設(shè)計(jì)和實(shí)現(xiàn)選擇。

zlib受一個(gè)32KB的窗口限制,而Zstandard并沒有任何固有的限制,它可以更充分地利用現(xiàn)代環(huán)境中的內(nèi)存,包括移動(dòng)和嵌入式環(huán)境。 一個(gè)新的Huffman解碼器Huff0。它可以借助多個(gè)ALU并行解碼符號(hào),減少算術(shù)操作之間的依賴。

Zstandard設(shè)法盡量減少分支,從而將因?yàn)榉种ьA(yù)測錯(cuò)誤而導(dǎo)致的、開銷很高的管道清理最小化。下面的例子展示了如何在不使用分支的情況下重寫while循環(huán):

/* 經(jīng)典版本 */while (nbBitsUsed >= 8) { /* 每個(gè)while測試都是一個(gè)分支 */ accumulator <<= 8; accumulator += *byte++; nbBitsUsed -= 8;}/* 無分支版本 */nbBytesUsed = nbBitsUsed >> 3;nbBitsUsed &= 7;ptr += nbBytesUsed;accumulator = read64(ptr);

對(duì)于差別只有幾個(gè)字節(jié)的序列,重復(fù)碼建模極大地改善了壓縮。

Zstandard是使用C語言編寫的。它既是一個(gè)命令行工具,也是一個(gè)庫。它提供了20多個(gè)壓縮級(jí)別,讓用戶可以根據(jù)具體可用的硬件、待壓縮的數(shù)據(jù)和待優(yōu)化的瓶頸進(jìn)行仔細(xì)地調(diào)整。Facebook建議開始時(shí)使用默認(rèn)級(jí)別3。該級(jí)別適合大多數(shù)情況。然后,可以嘗試9以下的級(jí)別,合理地平衡速度和空間,或者使用更高的級(jí)別獲得更高的壓縮率,而20以上的級(jí)別則適合那些你不關(guān)心壓縮速度的情況。

對(duì)于Zstandard的未來版本會(huì)帶來什么特性,Collet和Turner也提供了一些信息,其中包括支持多線程,以及可以提供更快壓縮速度和更高壓縮率的新的壓縮級(jí)別。

Zstandard是繼蘋果的ZLFSE和谷歌的Brotli之后的又一個(gè)開源壓縮算法。ZLFSE和Brotli都是開源的,每一種算法都針對(duì)特定的應(yīng)用場景進(jìn)行了優(yōu)化:Brotli似乎為實(shí)現(xiàn)Web資產(chǎn)和Android APK的高壓縮率進(jìn)行了優(yōu)化,而LZFSE的目標(biāo)是,在壓縮率相同的情況下,提供比zlib更快的壓縮速度和更低的電量消耗。

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號(hào)-6京公網(wǎng)安備 11010502049343號(hào)