Revisi Satu: Membersihkan yang Jelas

Dalam versi program contoh ini, beberapa perubahan jelas telah dilakukan yang akan mengambil langkah awal untuk meningkatkan performa. Versi kode ini jauh dari penyetelan performa, tetapi ini adalah langkah inkremental yang baik yang memungkinkan pemeriksaan efek pendekatan yang lebih baik secara bertahap.

Peringatan

Contoh aplikasi ini memberikan performa yang sengaja buruk, untuk mengilustrasikan peningkatan performa yang mungkin dilakukan dengan perubahan pada kode. Jangan gunakan sampel kode ini di aplikasi Anda; itu hanya untuk tujuan ilustrasi.

 

#include <windows.h>

BYTE Set(row, col, bAlive)
{
    SOCKET s = socket(...);
    BYTE byRet = 0;
    BYTE tmp[3];
    tmp[0] = (BYTE)row;
    tmp[1] = (BYTE)col;
    tmp[2] = (BYTE)bAlive;
    bind( s, ... );
    connect( s, ... );
    send( s, &tmp, 3 );
    recv( s, &byRet, 1 );
    closesocket( s );
    return byRet;
}

Perubahan dalam Versi ini

Versi ini mencerminkan perubahan berikut:

  • Menghapus SNDBUF=0. Penundaan 200 milidetik karena pengiriman yang tidak dibuffer dan pengakuan tertunda dihapus.
  • Menghapus perilaku Kirim-Kirim-Terima. Perubahan ini menghilangkan penundaan 200 milidetik karena Interaksi Nagle dan ACK yang tertunda.
  • Menghapus asumsi little-endian. Byte sekarang dalam urutan.

Masalah Yang Tersisa

Dalam versi ini, masalah berikut tetap ada:

  • Aplikasi ini masih terhubung berat. Karena penundaan 600+ milidetik dihapus, aplikasi sekarang mencapai tingkat berkelanjutan 12 koneksi per detik. Banyak koneksi bersamaan sekarang menjadi masalah.
  • Aplikasi ini masih gemuk; sel yang tidak berubah masih disebarluaskan ke server.
  • Aplikasi ini masih menunjukkan streaming yang buruk; Pengiriman 3-byte masih merupakan kiriman kecil.
  • Aplikasi ini sekarang mengirimkan 2 byte/RTT, yang sama dengan 4 KB/dtk pada Ethernet yang terhubung langsung. Ini tidak terlalu cepat, tetapi TIME-WAIT kemungkinan akan menyebabkan masalah terlebih dahulu.
  • Overhead turun menjadi 99,3%, yang masih bukan persentase overhead yang baik.

Metrik Performa Utama

Metrik performa utama 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—2×RTT
  • Goodput—2 byte/RTT
  • Overhead Protokol—99,3 persen

Meningkatkan Aplikasi Lambat

Terminologi Jaringan

Versi dasar: Aplikasi berkinerja yang sangat buruk

Revisi 2: Mendesain Ulang untuk Lebih Sedikit Koneksi

Revisi 3: Blok Terkompresi Kirim

Penyempurnaan Di Masa Mendatang