Révision deux : reconception pour des connexions moins nombreuses

Dans cette révision, l’exemple d’application est repensé pour éliminer les connexions inutiles.

Avertissement

Cet exemple d’application fournit également des performances intentionnellement médiocres, afin d’illustrer les améliorations de performances possibles avec les modifications apportées au code. N’utilisez pas cet exemple de code dans votre application. elle est fournie à titre d’illustration uniquement.

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 );

Problèmes restants

Les modifications apportées à la révision deux ont remanié l’application pour n’effectuer qu’une seule connexion par mise à jour. L’application comprend toujours les problèmes de performances suivants :

  • L’application est toujours sérialisée et bavarde.
  • L’application a toujours une conception FAT ; Il existe de nombreux envois qui ne nécessitent aucune opération dans cette conception.
  • Les envois sont toujours uniquement de 3 octets, ce qui correspond à une mauvaise diffusion.

Principales mesures de performance

Les mesures de performances suivantes sont exprimées en temps de boucle (RTT), Goodput et surcharge de protocole. Pour obtenir une explication de ces termes, consultez la rubrique terminologie réseau .

Cette version reflète les mesures de performances suivantes :

  • Heure de la cellule — 1 * RTT
  • Goodput — 4 octets/RTT
  • Surcharge de protocole : 96,8%

Amélioration d’une application lente

Terminologie du réseau

Version de référence : une application très médiocre

Révision 1 : nettoyage évident

Révision 3 : envoi de bloc compressé

Améliorations futures