修订版三:压缩块发送

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

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 千字节/RTT
  • 协议开销 - 14%

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

改进慢应用程序

网络术语

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

修订版 1:清理明显

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

未来改进