修订版三:压缩块发送
在此版本的应用程序中,使用数据的压缩块发送。 此更改可显著提高性能。
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% 来自连接启动和拆解。
相关主题