2009-11-26 96 views
0

比方說,我有一個簡單的TCP服務器產生一個線程裏的數組,序列化它,它通過TCP連接發送到客戶端,當它到達客戶端,客戶端反序列化和執行的東西...即。連續計算。那麼這是一個非常簡單的過程,但我想知道這個過程是否有任何性能權衡?例如,客戶端可以像線程生成數組一樣快速地執行某些操作,例如,如果線程每秒產生100個數組(100 m/s),客戶端是否也會在一秒鐘內獲得100個數組?該對象是否可以實時序列化和反序列化?如果有人能向我解釋這一點,我會很高興。對象序列化性能

很好,當然忽略不可靠的TCP性能。

謝謝!

+2

這將非常依賴於語言,平臺,使用的技術,限制以及實時和序列化的定義。 – 2009-11-26 20:28:25

+0

實時就好像序列化/反序列化是服務器/客戶端的透明過程。以便我們確信我們的數據(對象)在時間內被序列化/反序列化。 – Faiz 2009-11-27 01:02:16

+0

它完全取決於帶寬。發件人無法以比客戶可以收到的速度更快的速度發送郵件。關於這一點沒有任何「實時」。 – EJP 2016-10-30 01:31:32

回答

0

通過實時,你的意思是說「同時」?如果是,那麼繼續發送陣列成員。但是這隻有在需要花費時間時纔有用。每個數組元素都相當可觀。

如果你的意思並不是說,同時,恕我直言,這不應該是太大的延遲時間的序列化/反序列化。

+0

不是同時實時的,例如對於服務器和客戶端來說,實時的例如100個陣列要每秒鐘序列化和反序列化。對'100包陣列'到達客戶端所花費的時間不感興趣。 – Faiz 2009-11-26 20:36:48

1

實時可能不是,除非你是在談論硬盤的最後期限,這是我在這種情況下看到這裏使用權期限是不是真的有可能,因爲我們在步驟之間談論3 ..序列,送過來的網絡並反序列化。

有準確預測會發生什麼事情沒有真正的方法。如果我們把網絡延遲拿出來,剩下的就取決於接收機的速度。如果它比發送機器忙或功率低,它可能無法處理髮件人發送的機器。

而且,這裏真正的問題是序列化和從我瞭解的CPU時間方面反序列化..成本,反序列化是一個更昂貴的操作。所以我的猜測是接收者會很難保持,所以你可能想在發送另一個包之前發回一個確認。

0

在這種情況下,序列化成本被有效地加入到取供服務器生成所述陣列的時間,並且成本unserialisation加入到採取客戶端來處理所述陣列的時間。

如果:

  • TG是由服務器使用以產生一個陣列的時間;
  • TS是串行化一個數組所需的時間;
  • TU是解串一個數組需要的時間;和
  • TP是客戶端用來處理一個數組的時間。

(所有時間以秒計)

然後,如果TP + TU < TG + TS,該過程將被服務器速度的限制,你將能夠處理高達每秒1/(TG + TS)陣列。如果這大於100,那麼你可以達到你的目標。另一方面,如果TP + TU > TG + TS,則進程將受到客戶端速度的限制,並且您將能夠每秒處理高達1/(TP + TU)數組。