Revisi Tiga: Blok Terkompresi Kirim

Dalam versi aplikasi ini, blok terkompresi mengirim data digunakan. Perubahan ini menghasilkan peningkatan performa yang signifikan.

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

Perubahan dalam Versi ini

Versi ini mencerminkan perubahan berikut:

  • Pembaruan sel tidak lagi diserialisasikan.
  • Karena pengiriman blok digunakan, aplikasi tidak lagi cerewet.
  • Pemadatan data digunakan, menghasilkan aplikasi yang lebih sedikit lemak.

Masih ada masalah dengan versi aplikasi ini; risiko kebuntuan ada karena pengiriman besar digunakan tanpa penerimaan. Server mengirimkan satu byte untuk setiap 3 byte yang diterima. Ini dapat menyebabkan kebuntuan jika ukuran buffer penerima kurang dari 1000 byte untuk aplikasi sampel ini.

Metrik Performa Utama

Metrik performa berikut dinyatakan dalam Waktu Pulang Pergi (RTT), Goodput, dan Overhead Protokol. Lihat topik Terminologi Jaringan untuk penjelasan tentang istilah-istilah ini.

Versi ini mencerminkan metrik performa berikut:

  • Waktu Sel — .002*RTT
  • Goodput — 2 Kilobyte/RTT
  • Overhead Protokol — 14%

Dari overhead 14%, 6% berasal dari header Ethernet dan 8% lainnya berasal dari startup koneksi dan teardown.

Meningkatkan Aplikasi Lambat

Terminologi Jaringan

Versi dasar: Aplikasi berkinerja yang sangat buruk

Revisi 1: Membersihkan yang Jelas

Revisi 2: Mendesain Ulang untuk Lebih Sedikit Koneksi

Penyempurnaan Di Masa Mendatang