版權全部。
在網路網路傳輸過程中。最關心的就是傳輸效率問題。而提高傳輸效率最有效的方法就是對傳輸的資料進行壓縮。但壓縮資料也要耗費一定的時間,是不是壓縮後一定能提高效率呢?該怎樣選擇合適的壓縮演算法呢?請看本文的詳細分析。
如果資料大小為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壓縮才幹提高傳輸效率,假設頻寬夠高,就不要壓縮了,否則會更慢
一般client訪問server,需進行壓縮。 (眼下client到server的頻寬還是比較低的)
server間傳輸,能夠不壓縮。或者用lz4壓縮。 (server間的頻寬通常是1000bps。即100mbps)
在頻寬 n<3.3mbps的情況下, 使用zlib要比lz4更快。
0-3.3mbps zlib壓縮傳輸最快。lz4壓縮傳輸次之。普通傳輸最慢
3.3 - 13.3mbps lz4壓縮傳輸最快。zlib壓縮傳輸次之,普通傳輸最慢
13.3-179mbps lz4壓縮傳輸最快,普通傳輸次之。zlib壓縮傳輸 反而更慢
大於179mbps 普通傳輸就能夠,由於網路傳輸速度 遠遠高於壓縮及解壓縮速度了
網路資料傳輸
網路資料傳輸 wcdma全名是widebandcdma,中文譯名為 寬頻分碼多工訪問 它可支援384kbps到2mbps不等的資料傳輸速率,在高速移動的狀態,可提供384kbps的傳輸速率,在低速或是室內環境下,則可提供高達2mbps的傳輸速率。而gsm系統目前只能傳送9.6kbps,固定線路mod...
是否需要對網路傳輸資料進行壓縮?如何選擇壓縮演算法?
在網路網路傳輸過程中,最關心的就是傳輸效率問題。而提高傳輸效率最有效的方法就是對傳輸的資料進行壓縮。但壓縮資料也要耗費一定的時間,是不是壓縮後一定能提高效率呢?該如何選擇合適的壓縮演算法呢?請看本文的具體分析。假設資料大小為d mb 網路頻寬為 n mbps 注意這裡是mbps,而不是通常說的mbp...
Qt 網路資料傳輸
以前寫介面主要用qt做ui,底層的功能是呼叫別人提供的介面,分工比較明確,但要更好地實現跨平台,則盡量使用qt內部的介面 當然,也有很多比較強大的庫,例如libcurl qt5自帶的網路處理模組qtnetwork 主要通過qnetworkaccessmanager qnetworkrequest q...