目前,如果“numpy”不可用,websockify/websocket.py 会给出警告:
警告:没有“numpy”模块,HyBi 协议较慢或被禁用
这有点令人困惑。 首先,HyBi 绝对不是“禁用”的。 而且真的慢吗? 我用 noVNC 做了一些测试,即使在以高帧率播放 Youtube 视频时,使用 websocket.py 的过程也根本不消耗太多 CPU; 它很少出现在“顶级”列表中。 所以我想知道,有没有对此进行过真正的测量? 我已经做了一些谷歌搜索,但没有找到任何东西(除了 numpy 的问题......)。 恕我直言,除非我们可以衡量 numpy 有很大的不同,否则我认为只需要标准 Python 功能会更好、更干净。
“较慢或禁用”部分是因为有 4 个不同的 python 模块是可选的,并且使用 websocket.py 顶部的相同代码进行检查。 例如,如果未找到 ssl 模块,则禁用 TLS/wss。 我只是推动了一项更改,这将使这一点更加清晰。
Numpy 肯定更快。 使用 tests/latency.py + tests/latency.html 测试我得到以下结果(10ms 发送延迟并且只在本地主机上运行):
数据包大小 2000 字节:
数据包大小 20000 字节:
数据包大小 100000 字节:
此外,对于 100kb 的数据包大小,在没有 numpy 的情况下,延迟不仅要高出 6 倍,而且服务器开始落后,客户端在测试过程中不得不反复退出。
请注意,numpy 确实只影响客户端-> 服务器数据取消屏蔽,因此对于像 noVNC 这样的用途,它基本上是无关紧要的。 然而,websockify 不仅仅适用于 noVNC,因此在客户端向服务器发送大量数据的情况下,numpy 提供了显着的性能改进。
谢谢!
最有用的评论
“较慢或禁用”部分是因为有 4 个不同的 python 模块是可选的,并且使用 websocket.py 顶部的相同代码进行检查。 例如,如果未找到 ssl 模块,则禁用 TLS/wss。 我只是推动了一项更改,这将使这一点更加清晰。
Numpy 肯定更快。 使用 tests/latency.py + tests/latency.html 测试我得到以下结果(10ms 发送延迟并且只在本地主机上运行):
数据包大小 2000 字节:
数据包大小 20000 字节:
数据包大小 100000 字节:
此外,对于 100kb 的数据包大小,在没有 numpy 的情况下,延迟不仅要高出 6 倍,而且服务器开始落后,客户端在测试过程中不得不反复退出。
请注意,numpy 确实只影响客户端-> 服务器数据取消屏蔽,因此对于像 noVNC 这样的用途,它基本上是无关紧要的。 然而,websockify 不仅仅适用于 noVNC,因此在客户端向服务器发送大量数据的情况下,numpy 提供了显着的性能改进。