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.
Rubriques connexes