Revisão Dois: Reprojetando para menos conexões
Nesta revisão, o aplicativo de exemplo é reprojetado para eliminar conexões desnecessárias.
Aviso
Esses exemplos do aplicativo também fornecem desempenho intencionalmente ruim, a fim de ilustrar melhorias de desempenho possíveis com alterações no código. Não use este exemplo de código em seu aplicativo; é apenas para fins de ilustração.
ComputeNext( Map );
bind( s, ... );
connect( s, ... );
for(int i=0 ; i < ROWS ; ++i)
for(int j=0 ; j < COLS ; ++j)
{
BYTE tmp[3];
tmp[0] = i;
tmp[1] = j;
tmp[2] = Map[i][j];
send( s, tmp, 3 );
recv( s, &byRet, 1 );
}
closesocket( s );
Problemas restantes
As alterações em Revisão Dois reformularam o aplicativo para fazer apenas uma conexão por atualização. O aplicativo ainda inclui os seguintes problemas de desempenho:
- O aplicativo ainda é serializado e tagarela.
- O aplicativo ainda tem um design gordo; há muitos envios que não exigem nenhuma operação neste design.
- Os envios ainda são apenas 3 bytes, o que é um streaming ruim.
Principais métricas de desempenho
As métricas de desempenho a seguir são expressas em RTT (Tempo de Viagem de Ida e Volta), Boa taxa 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:
- Tempo de célula — 1*RTT
- Goodput — 4 bytes/RTT
- Sobrecarga de protocolo – 96,8%
Tópicos relacionados