Revision 3: Komprimiertes Senden von Blocken
In dieser Version der Anwendung wird ein komprimierter Blocksendevorgang der Daten verwendet. Diese Änderung führt zu einer erheblichen Leistungsverbesserung.
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 );
Änderungen in dieser Version
Diese Version spiegelt die folgenden Änderungen wider:
- Zellupdates werden nicht mehr serialisiert.
- Da ein Blocksende verwendet wird, ist die Anwendung nicht mehr chatzig.
- Die Datenkomprimierung wird verwendet, was zu einer weniger fetten Anwendung führt.
Es liegt weiterhin ein Problem mit dieser Version der Anwendung vor. das Risiko eines Deadlocks besteht, da ein großer Sendevorgang ohne Empfang verwendet wird. Der Server sendet ein Byte für alle empfangenen 3 Bytes. Dies kann zu einem Deadlock führen, wenn die Empfangspuffergröße für diese Beispielanwendung kleiner als 1.000 Bytes ist.
Schlüsselleistungsmetriken
Die folgenden Leistungsmetriken werden in Roundtrip time (RTT), Goodput und Protocol Overhead ausgedrückt. Eine Erläuterung dieser Begriffe finden Sie im Thema Netzwerkterminologie .
Diese Version spiegelt die folgenden Leistungsmetriken wider:
- Zellenzeit – .002*RTT
- Goodput – 2 KB/RTT
- Protokollmehraufwand – 14 %
Von den 14 % Mehraufwand stammen 6 % aus den Ethernet-Headern und die anderen 8 % aus dem Start- und Abbruch der Verbindung.
Zugehörige Themen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für