Compartir a través de


Revisión dos: rediseño para menos conexiones

En esta revisión, la aplicación de ejemplo se ha rediseñado para eliminar las conexiones innecesarias.

Advertencia

En este ejemplo de la aplicación también se proporciona un rendimiento intencionadomente deficiente, con el fin de ilustrar las mejoras de rendimiento posibles con los cambios en el código. No use este ejemplo de código en la aplicación; es solo para fines ilustrativos.

 

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

Los cambios en la revisión Dos rediseñó la aplicación para realizar solo una conexión por actualización. La aplicación sigue incluyendo los siguientes problemas de rendimiento:

  • La aplicación todavía está serializada y chatty.
  • La aplicación sigue teniendo un diseño gordo; hay muchos envíos que no requieren ninguna operación en este diseño.
  • Los envíos siguen siendo de solo 3 bytes, lo que es un streaming deficiente.

Métricas clave de rendimiento

Las siguientes métricas de rendimiento se expresan en Tiempo de ida y vuelta (RTT), Goodput y Sobrecarga del protocolo. Consulte el tema Terminología de red para obtener una explicación de estos términos.

Esta versión refleja las siguientes métricas de rendimiento:

  • Tiempo de celda: 1*RTT
  • Goodput: 4 bytes/RTT
  • Sobrecarga del protocolo: 96,8 %

Mejora de una aplicación lenta

Terminología de red

La versión de línea de base: una aplicación con un rendimiento muy deficiente

Revisión 1: Limpieza de la obvia

Revisión 3: Envío de bloque comprimido

Mejoras futuras