2010-09-08 94 views
0

我試圖通過套接字發送大量數據(基本上是將數據記錄轉換爲字符串)並降低了其他程序的性能。是否可以使用gzip等壓縮數據,並在另一端解壓縮數據?壓縮套接字發送數據

+0

您可以隨時在應用程序層處理壓縮/解壓縮。 – vrdhn 2010-09-08 05:03:52

回答

1

是的,但壓縮和解壓縮也有其成本。

您可能想要考慮使用另一個進程或線程來處理數據傳輸;這可能比僅僅進行壓縮更困難,但是當數據負載增加n倍時可以更好地擴展。

+0

問題是服務器非常快速地生成數據,並且套接字是一個主要瓶頸。如果我不減少在套接字傳輸上花費的時間,它會真的影響我的性能 – aks 2010-09-08 04:58:04

0

當然,你可以做到這一點。發送二進制數據時,您必須注意平臺的端點。

但是,你確定你的性能問題將通過壓縮發送的數據來解決嗎?你仍然會有額外的步驟(壓縮/解壓縮,可能解決endiannes問題)。

想想如何通過套接字進行通信。你正在使用同步或異步通信。如果你做同步讀寫,那麼你可以感覺到性能的懲罰...

1

是的,這是可能的。 zlib是進行這種壓縮和解壓縮的庫。但是,通過以二進制格式序列化數據記錄而不是字符串可以更好地服務於您;這應該會提高性能,甚至可能比使用壓縮更好。

1

是的。實現這個最簡單的方法是使用古老的zlib庫。

compress()uncompress()實用功能可能是你在之後。