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