Partager via


Révision 2 : Refonte pour moins de connexions

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

Avertissement

Ces exemples de l’application fournissent é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 ; c’est à des fins 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 à Révision 2 ont repensé l’application pour n’effectuer qu’une seule connexion par mise à jour. L’application inclut toujours les problèmes de performances suivants :

  • L’application est toujours sérialisée et bavard.
  • L’application a toujours un design gras; il existe de nombreux envois qui ne nécessitent aucune opération dans cette conception.
  • Les envois ne sont toujours que de 3 octets, ce qui est une mauvaise diffusion en continu.

Métriques de performances clés

Les métriques de performances suivantes sont exprimées en temps d’aller-retour (RTT), Goodput et Surcharge de protocole. Pour obtenir une explication de ces termes, consultez la rubrique Terminologie du réseau .

Cette version reflète les métriques de performances suivantes :

  • Durée de cellule : 1*RTT
  • Goodput — 4 octets/RTT
  • Surcharge de protocole : 96,8 %

Amélioration d’une application lente

Terminologie réseau

La version de référence : une application très peu performante

Révision 1 : Nettoyage de l’évidence

Révision 3 : Envoi de blocs compressés

Améliorations futures