修订版三:压缩块发送

在此版本的应用程序中,使用数据的压缩块发送。 此更改可显著提高性能。

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) 、良好输出和协议开销表示。 有关这些术语的说明,请参阅 网络术语 主题。

此版本反映以下性能指标:

  • 单元格时间 — .002*RTT
  • Goodput — 2 千字节/RTT
  • 协议开销 — 14%

在 14% 的开销中,6% 来自以太网标头,其他 8% 来自连接启动和拆解。

改进慢速应用程序

网络术语

基线版本:性能非常差的应用程序

修订 1:清理明显

修订版 2:为更少的连接重新设计

未来改进