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
Topik terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk