Websockify: Пересмотрите использование numpy и рекомендации

Созданный на 19 апр. 2013  ·  2Комментарии  ·  Источник: novnc/websockify

В настоящее время websockify / websocket.py выдает предупреждение, если "numpy" недоступен:

ВНИМАНИЕ: нет модуля numpy, протокол HyBi работает медленнее или отключен

Это несколько сбивает с толку. Во-первых, HyBi точно не «отключен». И действительно ли он медленнее? Я провел несколько тестов с noVNC, и даже при воспроизведении видео Youtube с высокой частотой кадров процесс использования websocket.py совсем не потребляет много ресурсов процессора; он вообще редко появляется в топ-листах. Так что мне интересно, проводились ли здесь какие-нибудь реальные измерения? Я немного погуглил и ничего не нашел (кроме проблем с numpy ...). ИМХО, если мы не сможем измерить, что numpy имеет существенное значение, я думаю, было бы лучше и более чистым, если бы требовались только стандартные функции Python.

question

Самый полезный комментарий

Часть «медленнее или отключена» связана с тем, что есть 4 разных модуля python, которые являются необязательными и проверяются с использованием того же кода в верхней части websocket.py. Например, если модуль ssl не найден, TLS / wss отключен. Я просто внес изменение, которое сделает это более ясным.

Numpy определенно быстрее. Используя тест tests / latency.py + tests / latency.html, я получаю следующие результаты (с задержкой отправки 10 мс и просто работающей на localhost):

Размер пакета 2000 байт:

  • Средняя задержка в оба конца 0,8 мс с numpy
  • Средняя задержка в оба конца 1,6 мс без numpy

Размер пакета 20000 байт:

  • Средняя задержка в оба конца 2,5 мс с numpy
  • Средняя задержка в оба конца 9,2 мс без numpy

Размер пакета 100000 байт:

  • Средняя задержка в оба конца 6,3 мс с numpy
  • 40,1 мс средняя задержка при повторном обращении без numpy

Кроме того, с размером пакета 100 КБ не только задержка в 6 раз выше без numpy, но и сервер начинает отставать, и клиенту приходится неоднократно отступать во время теста.

Обратите внимание, что numpy действительно влияет только на демаскировку данных клиент-> сервер, поэтому для таких приложений, как noVNC, это будет в основном неактуальным. Однако websockify предназначен не только для noVNC, поэтому в случае, когда клиент отправляет много данных на сервер, numpy обеспечивает значительное улучшение производительности.

Все 2 Комментарий

Часть «медленнее или отключена» связана с тем, что есть 4 разных модуля python, которые являются необязательными и проверяются с использованием того же кода в верхней части websocket.py. Например, если модуль ssl не найден, TLS / wss отключен. Я просто внес изменение, которое сделает это более ясным.

Numpy определенно быстрее. Используя тест tests / latency.py + tests / latency.html, я получаю следующие результаты (с задержкой отправки 10 мс и просто работающей на localhost):

Размер пакета 2000 байт:

  • Средняя задержка в оба конца 0,8 мс с numpy
  • Средняя задержка в оба конца 1,6 мс без numpy

Размер пакета 20000 байт:

  • Средняя задержка в оба конца 2,5 мс с numpy
  • Средняя задержка в оба конца 9,2 мс без numpy

Размер пакета 100000 байт:

  • Средняя задержка в оба конца 6,3 мс с numpy
  • 40,1 мс средняя задержка при повторном обращении без numpy

Кроме того, с размером пакета 100 КБ не только задержка в 6 раз выше без numpy, но и сервер начинает отставать, и клиенту приходится неоднократно отступать во время теста.

Обратите внимание, что numpy действительно влияет только на демаскировку данных клиент-> сервер, поэтому для таких приложений, как noVNC, это будет в основном неактуальным. Однако websockify предназначен не только для noVNC, поэтому в случае, когда клиент отправляет много данных на сервер, numpy обеспечивает значительное улучшение производительности.

Спасибо!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги