共用方式為


修訂三:壓縮區區塊轉送

在此版本的應用程式中,會使用資料的壓縮區區塊轉送。 這項變更會導致大幅改善效能。

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% 則來自連線啟動和終止。

改善緩慢的應用程式

網路術語

基準版本:效能不佳的應用程式

修訂 1:清除明顯

修訂 2:重新設計較少連線

未來的改善