在網路網路傳輸過程中,最關心的就是傳輸效率問題。而提高傳輸效率最有效的方法就是對傳輸的資料進行壓縮。但壓縮資料也要耗費一定的時間,是不是壓縮後一定能提高效率呢?該如何選擇合適的壓縮演算法呢?請看本文的具體分析。
假設資料大小為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 其所形成的等高線非常尖。當使用梯度下降法尋求最優解時,很有可能走 之字型 路線 垂直等高線走 從而導致需要迭代很多次才能收斂 而右圖對兩個原始特徵進行了歸一化,...