Saat ini, websockify/websocket.py akan memberikan peringatan jika "numpy" tidak tersedia:
PERINGATAN: tidak ada modul 'numpy', protokol HyBi lebih lambat atau dinonaktifkan
Ini agak membingungkan. Pertama-tama, HyBi jelas tidak "dinonaktifkan". Dan apakah itu benar-benar lebih lambat? Saya telah melakukan beberapa tes dengan noVNC, dan bahkan ketika memutar video Youtube dengan frame rate tinggi, proses menggunakan websocket.py tidak menghabiskan banyak CPU sama sekali; jarang muncul di daftar "atas" sama sekali. Jadi saya bertanya-tanya, apakah ada pengukuran nyata yang dilakukan pada ini? Saya telah melakukan beberapa Googling dan gagal menemukan apa pun (kecuali masalah dengan numpy ...). IMHO, kecuali kita dapat mengukur bahwa numpy membuat perbedaan besar, saya pikir akan lebih baik dan lebih bersih untuk hanya membutuhkan fungsionalitas Python standar.
Bagian "lebih lambat atau dinonaktifkan" adalah karena ada 4 modul python berbeda yang opsional dan diperiksa menggunakan kode yang sama di bagian atas websocket.py. Misalnya, jika modul ssl tidak ditemukan, maka TLS/wss dinonaktifkan. Saya baru saja mendorong perubahan yang akan membuat ini lebih jelas.
Numpy jelas lebih cepat. Menggunakan tes/latency.py + tes/latency.html saya mendapatkan hasil berikut (dengan penundaan pengiriman 10 ms dan hanya berjalan di localhost):
Ukuran paket 2000 byte:
Ukuran paket 20000 byte:
Ukuran paket 100000 byte:
Selain itu, dengan ukuran paket 100kb, latensi tidak hanya 6 kali lebih tinggi tanpa numpy, tetapi server mulai tertinggal dan klien harus mundur berulang kali selama pengujian.
Perhatikan bahwa numpy benar-benar hanya memengaruhi pembukaan data klien-> server, jadi untuk penggunaan seperti noVNC pada dasarnya tidak relevan. Namun, websockify bukan hanya untuk noVNC, jadi jika klien mengirim banyak data ke server, numpy memberikan peningkatan kinerja yang signifikan.
Terima kasih!
Komentar yang paling membantu
Bagian "lebih lambat atau dinonaktifkan" adalah karena ada 4 modul python berbeda yang opsional dan diperiksa menggunakan kode yang sama di bagian atas websocket.py. Misalnya, jika modul ssl tidak ditemukan, maka TLS/wss dinonaktifkan. Saya baru saja mendorong perubahan yang akan membuat ini lebih jelas.
Numpy jelas lebih cepat. Menggunakan tes/latency.py + tes/latency.html saya mendapatkan hasil berikut (dengan penundaan pengiriman 10 ms dan hanya berjalan di localhost):
Ukuran paket 2000 byte:
Ukuran paket 20000 byte:
Ukuran paket 100000 byte:
Selain itu, dengan ukuran paket 100kb, latensi tidak hanya 6 kali lebih tinggi tanpa numpy, tetapi server mulai tertinggal dan klien harus mundur berulang kali selama pengujian.
Perhatikan bahwa numpy benar-benar hanya memengaruhi pembukaan data klien-> server, jadi untuk penggunaan seperti noVNC pada dasarnya tidak relevan. Namun, websockify bukan hanya untuk noVNC, jadi jika klien mengirim banyak data ke server, numpy memberikan peningkatan kinerja yang signifikan.