是否需要對網路傳輸資料進行壓縮?如何選擇壓縮演算法?

2021-06-22 22:25:33 字數 1533 閱讀 9572

在網路網路傳輸過程中,最關心的就是傳輸效率問題。而提高傳輸效率最有效的方法就是對傳輸的資料進行壓縮。但壓縮資料也要耗費一定的時間,是不是壓縮後一定能提高效率呢?該如何選擇合適的壓縮演算法呢?請看本文的具體分析。

假設資料大小為d (mb)

網路頻寬為       n (mbps)  -------------注意這裡是mbps,而不是通常說的mbps,      1mbps = 10mbps,       1000mbps=100mbps.

那麼資料傳輸時間t1 = d/n

假設壓縮演算法壓縮率為 r     ------------------ 即壓縮後資料大小為d*r

壓縮速度為           vc  mb/s

解壓縮速度為       vd mb/s

那麼壓縮後的資料傳輸時間 t2 =  d/vc + d*r/n + d/vd  = d/n * ( r + n/vc + n/vd)

對比:t1 = d/n

t2 = d/n*(r+n/vc+n/vd)

發現:如果r + n/vc + n/vd < 1,則壓縮後傳輸要更快,否則壓縮後傳輸反而更慢。

也就是壓縮後傳輸能否更快是和壓縮演算法的 「壓縮率」,「壓縮/解壓縮速度」 以及當前「頻寬」相關

壓縮率越小,壓縮/解壓縮越快,頻寬越小,壓縮後傳輸越能提高效率。而在頻寬不變得情況下,壓縮率越小,壓縮/解壓縮越快 越好。

而由於壓縮率和壓縮/解壓縮速度成指數型反比(壓縮率提高一點點,壓縮/解壓縮速度就大幅降低),所以在選用壓縮演算法時:

最好選擇壓縮/解壓縮速度快的演算法,而不必太關注壓縮率(當然也不能完全不壓縮)

壓縮率r為 圖中的 1/ratio。

那麼帶入到上面公式:

lz4:1/2.084 + n/422 + n/1820 = 0.48 + n*0.0029   也就是說在頻寬n<179mbps的情況下,採用lz4壓縮能提高傳輸效率。

zlib:1/3.099 + n/21 + n/300 =  0.32 + n*0.051          也就是說在頻寬n<13.3mbps的情況下,採用zlib壓縮才能提高傳輸效率,如果頻寬夠高,就不要壓縮了,否則會更慢

一般客戶端訪問伺服器,需進行壓縮。 (目前客戶端到伺服器的頻寬還是比較低的)

伺服器間傳輸,可以不壓縮,或者用lz4壓縮。 (伺服器間的頻寬一般是1000bps,即100mbps)

在頻寬 n<3.3mbps的情況下, 使用zlib要比lz4更快。

0-3.3mbps                       zlib壓縮傳輸最快,lz4壓縮傳輸次之,普通傳輸最慢

3.3 - 13.3mbps               lz4壓縮傳輸最快,zlib壓縮傳輸次之,普通傳輸最慢

13.3-179mbps                lz4壓縮傳輸最快,普通傳輸次之,zlib壓縮傳輸 反而更慢

大於179mbps                普通傳輸就可以,因為網路傳輸速度 遠遠高於壓縮及解壓縮速度了

是否須要對網路資料傳輸進行壓縮?怎樣選擇壓縮演算法?

版權全部。在網路網路傳輸過程中。最關心的就是傳輸效率問題。而提高傳輸效率最有效的方法就是對傳輸的資料進行壓縮。但壓縮資料也要耗費一定的時間,是不是壓縮後一定能提高效率呢?該怎樣選擇合適的壓縮演算法呢?請看本文的詳細分析。如果資料大小為d mb 網路頻寬為 n mbps 注意這裡是mbps,而不是通常...

傅利葉變換濾波時,為什麼需要對輸入資料進行零填充?

卷積定理 空間濾波由濾波器模板 h x,y 卷積一幅影象 f x,y 組成。根據卷積定理,在頻率域中讓 f x,y 乘以空間濾波器的傅利葉變換 h u,v 可得到相同的結果。但在處理離散量時,我們知道 f 和 h 都是週期的,這表明在離散頻率域中執行的卷積也是週期的。因此用 dft 執行的卷積稱為迴...

機器學習中為什麼需要對資料進行歸一化?

如下圖所示,藍色的圈圈圖代表的是兩個特徵的等高線。其中左圖兩個特徵x1和x2的區間相差非常大,x1區間是 0,2000 x2區間是 1,5 其所形成的等高線非常尖。當使用梯度下降法尋求最優解時,很有可能走 之字型 路線 垂直等高線走 從而導致需要迭代很多次才能收斂 而右圖對兩個原始特徵進行了歸一化,...