Revisão Três: Envio de Bloco Compactado
Nesta versão do aplicativo, um envio de bloco compactado dos dados é usado. Essa alteração resulta em uma melhoria significativa no desempenho.
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 );
Alterações nesta versão
Esta versão reflete as seguintes alterações:
- As atualizações de célula não são mais serializadas.
- Como um envio em bloco é usado, o aplicativo não é mais tagarela.
- A compactação de dados é usada, resultando em um aplicativo menos gordo.
Ainda há um problema com essa versão do aplicativo; o risco de deadlock existe, pois um envio grande é usado sem recebimentos. O servidor envia um byte para cada 3 bytes recebidos. Isso poderá causar um deadlock se o tamanho do buffer de recebimento for menor que 1000 bytes para este aplicativo de exemplo.
Principais métricas de desempenho
As métricas de desempenho a seguir são expressas em RTT (Tempo de Viagem de Ida e Volta), Goodput e Sobrecarga de Protocolo. Consulte o tópico Terminologia de Rede para obter uma explicação desses termos.
Esta versão reflete as seguintes métricas de desempenho:
- Hora da Célula — .002*RTT
- Goodput — 2 Kilobytes/RTT
- Sobrecarga de protocolo – 14%
Da sobrecarga de 14%, 6% é dos cabeçalhos Ethernet e os outros 8% são da inicialização e da desinstalação da conexão.
Tópicos relacionados