حاليًا ، سيعطي websockify / websocket.py تحذيرًا في حالة عدم توفر "numpy":
تحذير: لا توجد وحدة نمطية "numpy" ، بروتوكول HyBi أبطأ أو معطل
هذا محير إلى حد ما. بادئ ذي بدء ، فإن HyBi بالتأكيد ليست "معطلة". وهل هي حقا أبطأ؟ لقد أجريت بعض الاختبارات باستخدام noVNC ، وحتى عند تشغيل مقاطع فيديو Youtube بمعدل إطارات مرتفع ، فإن العملية باستخدام websocket.py لا تستهلك الكثير من وحدة المعالجة المركزية على الإطلاق ؛ نادرًا ما يظهر في القائمة "العلوية" على الإطلاق. لذلك أنا أتساءل ، هل تم إجراء أي قياسات حقيقية على هذا؟ لقد أجريت بعض البحث في Google وفشلت في العثور على أي شيء (باستثناء مشاكل numpy ...). IMHO ، ما لم نتمكن من قياس أن numpy يحدث فرقًا جوهريًا ، أعتقد أنه سيكون من الأفضل والأكثر نظافة أن تتطلب وظائف Python القياسية فقط.
يرجع الجزء "الأبطأ أو المعطل" إلى وجود 4 وحدات مختلفة للبيثون اختيارية وتم التحقق منها باستخدام نفس الكود في الجزء العلوي من websocket.py. على سبيل المثال ، إذا لم يتم العثور على وحدة ssl ، فسيتم تعطيل TLS / wss. لقد دفعت للتو إلى تغيير من شأنه أن يجعل هذا أكثر وضوحًا.
Numpy هو بالتأكيد أسرع. باستخدام الاختبارات / latency.py + الاختبارات / latency.html test ، أحصل على النتائج التالية (مع تأخير إرسال قدره 10 مللي ثانية وتشغيله على المضيف المحلي فقط):
حجم الحزمة 2000 بايت:
حجم الحزمة 20000 بايت:
حجم الحزمة 100000 بايت:
بالإضافة إلى ذلك ، مع أحجام حزم 100 كيلو بايت ، لا يقتصر وقت الاستجابة على زيادة 6 مرات دون حدوث مشكلة ، بل يبدأ الخادم في التأخر ويتعين على العميل التراجع مرارًا وتكرارًا أثناء الاختبار.
لاحظ أن numpy يؤثر حقًا فقط على العميل> الكشف عن بيانات الخادم ، لذلك بالنسبة لاستخدامات مثل noVNC ، سيكون الأمر غير ذي صلة بشكل أساسي. ومع ذلك ، فإن websockify ليس مخصصًا لـ noVNC فقط ، لذلك في حالة إرسال العميل الكثير من البيانات إلى الخادم ، يوفر numpy تحسينًا كبيرًا في الأداء.
شكرا!
التعليق الأكثر فائدة
يرجع الجزء "الأبطأ أو المعطل" إلى وجود 4 وحدات مختلفة للبيثون اختيارية وتم التحقق منها باستخدام نفس الكود في الجزء العلوي من websocket.py. على سبيل المثال ، إذا لم يتم العثور على وحدة ssl ، فسيتم تعطيل TLS / wss. لقد دفعت للتو إلى تغيير من شأنه أن يجعل هذا أكثر وضوحًا.
Numpy هو بالتأكيد أسرع. باستخدام الاختبارات / latency.py + الاختبارات / latency.html test ، أحصل على النتائج التالية (مع تأخير إرسال قدره 10 مللي ثانية وتشغيله على المضيف المحلي فقط):
حجم الحزمة 2000 بايت:
حجم الحزمة 20000 بايت:
حجم الحزمة 100000 بايت:
بالإضافة إلى ذلك ، مع أحجام حزم 100 كيلو بايت ، لا يقتصر وقت الاستجابة على زيادة 6 مرات دون حدوث مشكلة ، بل يبدأ الخادم في التأخر ويتعين على العميل التراجع مرارًا وتكرارًا أثناء الاختبار.
لاحظ أن numpy يؤثر حقًا فقط على العميل> الكشف عن بيانات الخادم ، لذلك بالنسبة لاستخدامات مثل noVNC ، سيكون الأمر غير ذي صلة بشكل أساسي. ومع ذلك ، فإن websockify ليس مخصصًا لـ noVNC فقط ، لذلك في حالة إرسال العميل الكثير من البيانات إلى الخادم ، يوفر numpy تحسينًا كبيرًا في الأداء.