Websockify: 重新考虑 numpy 的用法和建议

创建于 2013-04-19  ·  2评论  ·  资料来源: novnc/websockify

目前,如果“numpy”不可用,websockify/websocket.py 会给出警告:

警告:没有“numpy”模块,HyBi 协议较慢或被禁用

这有点令人困惑。 首先,HyBi 绝对不是“禁用”的。 而且真的慢吗? 我用 noVNC 做了一些测试,即使在以高帧率播放 Youtube 视频时,使用 websocket.py 的过程也根本不消耗太多 CPU; 它很少出现在“顶级”列表中。 所以我想知道,有没有对此进行过真正的测量? 我已经做了一些谷歌搜索,但没有找到任何东西(除了 numpy 的问题......)。 恕我直言,除非我们可以衡量 numpy 有很大的不同,否则我认为只需要标准 Python 功能会更好、更干净。

question

最有用的评论

“较慢或禁用”部分是因为有 4 个不同的 python 模块是可选的,并且使用 websocket.py 顶部的相同代码进行检查。 例如,如果未找到 ssl 模块,则禁用 TLS/wss。 我只是推动了一项更改,这将使这一点更加清晰。

Numpy 肯定更快。 使用 tests/latency.py + tests/latency.html 测试我得到以下结果(10ms 发送延迟并且只在本地主机上运行):

数据包大小 2000 字节:

  • 使用 numpy 平均往返延迟为 0.8 毫秒
  • 1.6ms 平均往返延迟,没有 numpy

数据包大小 20000 字节:

  • 使用 numpy 平均往返延迟为 2.5 毫秒
  • 9.2ms 平均往返延迟,没有 numpy

数据包大小 100000 字节:

  • 使用 numpy 平均往返延迟为 6.3 毫秒
  • 没有 numpy 的 40.1ms 平均往返延迟

此外,对于 100kb 的数据包大小,在没有 numpy 的情况下,延迟不仅要高出 6 倍,而且服务器开始落后,客户端在测试过程中不得不反复退出。

请注意,numpy 确实只影响客户端-> 服务器数据取消屏蔽,因此对于像 noVNC 这样的用途,它基本上是无关紧要的。 然而,websockify 不仅仅适用于 noVNC,因此在客户端向服务器发送大量数据的情况下,numpy 提供了显着的性能改进。

所有2条评论

“较慢或禁用”部分是因为有 4 个不同的 python 模块是可选的,并且使用 websocket.py 顶部的相同代码进行检查。 例如,如果未找到 ssl 模块,则禁用 TLS/wss。 我只是推动了一项更改,这将使这一点更加清晰。

Numpy 肯定更快。 使用 tests/latency.py + tests/latency.html 测试我得到以下结果(10ms 发送延迟并且只在本地主机上运行):

数据包大小 2000 字节:

  • 使用 numpy 平均往返延迟为 0.8 毫秒
  • 1.6ms 平均往返延迟,没有 numpy

数据包大小 20000 字节:

  • 使用 numpy 平均往返延迟为 2.5 毫秒
  • 9.2ms 平均往返延迟,没有 numpy

数据包大小 100000 字节:

  • 使用 numpy 平均往返延迟为 6.3 毫秒
  • 没有 numpy 的 40.1ms 平均往返延迟

此外,对于 100kb 的数据包大小,在没有 numpy 的情况下,延迟不仅要高出 6 倍,而且服务器开始落后,客户端在测试过程中不得不反复退出。

请注意,numpy 确实只影响客户端-> 服务器数据取消屏蔽,因此对于像 noVNC 这样的用途,它基本上是无关紧要的。 然而,websockify 不仅仅适用于 noVNC,因此在客户端向服务器发送大量数据的情况下,numpy 提供了显着的性能改进。

谢谢!

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

doriwal picture doriwal  ·  26评论

hansent picture hansent  ·  3评论

dwt picture dwt  ·  3评论

kodeshpa picture kodeshpa  ·  3评论

nvie picture nvie  ·  3评论