十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
最近了解到了 zstd 這種新的壓縮算法。不像lz4,lzo,snappy等近幾年流行的壓縮算法專注于壓縮和解壓縮性能,zstd在性能不錯(cuò)的同時(shí)號(hào)稱壓縮率跟Deflate(zip/gzip的算法)相當(dāng)。下面是 官網(wǎng) 列出的數(shù)據(jù):
創(chuàng)新互聯(lián)公司專注于企業(yè)營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、寧蒗網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5開(kāi)發(fā)、商城系統(tǒng)網(wǎng)站開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為寧蒗等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
我們知道,壓縮算法的效果和性能跟被壓縮的數(shù)據(jù)類型和模式有很大的關(guān)系,光看別人的測(cè)試數(shù)據(jù)、benchmark是不夠的。正好有功能開(kāi)發(fā)需要,于是結(jié)合我們的使用場(chǎng)景真實(shí)測(cè)試的一下。
驚喜的是,實(shí)測(cè)的結(jié)果比官方提供的還好,終于找到了我們的cup of tea。
Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz, 8G內(nèi)存
CentOS 7.0
對(duì)幾種支持流式寫(xiě)入的壓縮算法,使用對(duì)應(yīng)的命令行工具進(jìn)行壓縮測(cè)試。
除了snappy,各種壓縮算法/工具都支持設(shè)置壓縮級(jí)別,高級(jí)別意味著以更長(zhǎng)的壓縮時(shí)間換取更高的壓縮率。
100萬(wàn)行不重復(fù)的某個(gè)應(yīng)用的日志文件,大小為977MB。
從上面可以看出:
zstd無(wú)論從處理時(shí)間還是壓縮率來(lái)看都占優(yōu)。snappy, lz4, lzo的壓縮率較低,但壓縮速度都很快,而zstd甚至比這些算法更快。Gzip的壓縮率比lz4等高不少,而zstd的壓縮率比gzip還提升一倍。
如果從上面的比較還不是特別直觀的話,我們?cè)僖胍粋€(gè)創(chuàng)造性的指標(biāo)(從網(wǎng)上其他壓縮算法對(duì)比沒(méi)有見(jiàn)過(guò)使用這項(xiàng)指標(biāo)):
代表單位處理時(shí)間可以壓縮去掉多少冗余數(shù)據(jù)。其中 權(quán)重系數(shù) 用來(lái)指定壓縮率和壓縮速度哪個(gè)更重要,這里我們認(rèn)為在我們的使用場(chǎng)景里兩者同樣重要,取系數(shù)為1。
從這里我們可以明顯看出, zstd lz4 lzo snappy 其他 。
對(duì)1000行、大小約為1MB的文件進(jìn)行壓縮測(cè)試,各種算法的壓縮率跟1GB大文件的壓縮率幾乎一樣。
下面再對(duì)更小的數(shù)據(jù)量——10行日志數(shù)據(jù)的壓縮率進(jìn)行對(duì)比。雖然我們的使用場(chǎng)景里沒(méi)有對(duì)小數(shù)據(jù)量的壓縮處理,但還是比較好奇zstd字典模式的效果。
其中最后一組數(shù)據(jù)為zstd使用10000行日志進(jìn)行訓(xùn)練生成字典文件,并利用字典文件輔助壓縮測(cè)試數(shù)據(jù)。
可以看出來(lái),除了zstd字典模式外,各種壓縮算法在處理更小的數(shù)據(jù)量時(shí)壓縮率都下降很多。而zstd字典模式對(duì)壓縮率帶來(lái)幫助非常明顯,與gzip對(duì)比,壓縮率從1000行時(shí)相差1倍,到10行時(shí)變?yōu)榱讼嗖罱咏?倍。
下一篇文章將給大家對(duì)比這幾種算法的golang開(kāi)源庫(kù)的性能和壓縮率。敬請(qǐng)期待。