次の方法で共有


リビジョン 3: 圧縮ブロック送信

このバージョンのアプリケーションでは、データの圧縮ブロック送信が使用されます。 この変更により、パフォーマンスが大幅に向上します。

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 バイトごとに 1 バイトを送信します。 このサンプル アプリケーションの受信バッファー サイズが 1,000 バイト未満の場合、デッドロックが発生する可能性があります。

主要なパフォーマンス メトリック

次のパフォーマンス メトリックは、ラウンド トリップ時間 (RTT)、Goodput、プロトコルオーバーヘッドで表されます。 これらの用語の説明については、ネットワーク用語 トピックを参照してください。

このバージョンには、次のパフォーマンス メトリックが反映されています。

  • セル時間 — .002*RTT
  • Goodput — 2 KB/RTT
  • プロトコルオーバーヘッド — 14%

14% のオーバーヘッドのうち、6% はイーサネット ヘッダーから、他の 8% は接続の起動と破棄です。

低速アプリケーションの の改善

ネットワーク用語

ベースライン バージョンの : パフォーマンスが非常に低いアプリケーション

リビジョン1:明白な をクリーンアップする

リビジョン 2: より少ない接続 の再設計

今後の改善