Partager via


Révision 3 : Envoi de blocs compressés

Dans cette version de l’application, un bloc compressé d’envoi des données est utilisé. Cette modification entraîne une amélioration significative des performances.

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

Modifications apportées à cette version

Cette version reflète les modifications suivantes :

  • Les mises à jour de cellule ne sont plus sérialisées.
  • Étant donné qu’un envoi de bloc est utilisé, l’application n’est plus bavard.
  • La compression des données est utilisée, ce qui entraîne une application moins grasse.

Il existe toujours un problème avec cette version de l’application ; le risque d’interblocage existe, car un envoi volumineux est utilisé sans réception. Le serveur envoie un octet pour 3 octets reçus. Cela peut entraîner un blocage si la taille de la mémoire tampon de réception est inférieure à 1 000 octets pour cet exemple d’application.

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 :

  • Heure de cellule — .002*RTT
  • Goodput — 2 Kilooctets/RTT
  • Surcharge de protocole : 14 %

Sur la surcharge de 14 %, 6 % proviennent des en-têtes Ethernet et les 8 % autres proviennent du démarrage et de la désactivation de la connexion.

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 2 : Refonte pour moins de connexions

Améliorations futures