修訂三:壓縮區區塊轉送
在此版本的應用程式中,會使用資料的壓縮區區塊轉送。 這項變更會導致大幅改善效能。
BYTE tmp[3*ROWS*COLS];
FIELD Old = Map;
ComputeNext( Map );
n=Compact(Map,Old,tmp);
bind( s, ... );
connect( s, ... );
send( s, tmp, 3*n );
//can't do recv(s,tmp,n)
for(int i=0; i < n; )
recv( s, tmp+i, n-i );
closesocket( s );
此版本的變更
此版本反映下列變更:
- 資料格更新不再序列化。
- 由於使用區區塊轉送,因此應用程式不再交談。
- 使用資料壓縮,導致較不大量的應用程式。
此版本的應用程式仍有問題;死結的風險存在,因為使用大型傳送時不會收到任何訊息。 伺服器會針對每 3 個位元組接收一個位元組傳送一個位元組。 如果此範例應用程式的接收緩衝區大小小於 1000 個位元組,這可能會導致死結。
關鍵效能計量
下列效能計量會以來回時程表示, (RTT) 、Goodput 和通訊協定額外負荷。 如需這些詞彙的說明,請參閱 網路術語 主題。
此版本反映下列效能計量:
- 儲存格時間 — .002*RTT
- Goodput — 2 KB/RTT
- 通訊協定額外負荷 — 14%
在 14% 的額外負荷中,6% 來自乙太網路標頭,另 8% 則來自連線啟動和終止。
相關主題