gpt4 book ai didi

python - Windows xp 和 Linux 中的 Telnet 性能

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:40:56 25 4
gpt4 key购买 nike

我有一个基于 Python 的 telnetlib 的库。最近,我注意到在 windows xp 和 Linux 中的性能差异如此之大。

在脚本下面,我设计了三个操作,“获取单位”,“只需按回车”,“获取带选项的单位”

“get units”返回长字符串,“get units with options”返回较短的字符串,“just press enter”返回最短的字符串。

让我们猜猜,哪个会花更多的时间,似乎它的顺序应该是“获取单位”,“获取带有选项的单位”,然后“只需按回车”。

但在 windows xp 中的实际结果是:

获取单位:3.67200016975 s获取带有选项的单位:10.0319998264 s只需按回车键:10.0 秒

Ubuntu 中的相同测试:获取单位:3.91432785988获取带有选项的单位:2.86995506287只需按回车键:2.05337381363

貌似windows xp对大IP包性能不错,但是对小包就很差了。

我已经使用 Windows 的 telnet 客户端 putty 手动测试了它。使用wireshark 抓取telnet 数据。并且发现对于小数据包,数据包延迟很长,大约0.2s

我曾尝试更改 tcp 窗口,但无济于事。

谁能给些建议?

try:
begin_g = time.time()
for i in range(50):
connection.write('ZUSI:OMU;')
ret = connection.read_until('<')
ret = connection.read_until('<')
end_g = time.time()
elapse_g = end_g-begin_g

clean_begin_t = time.time()
for i in range(50):
ret = ipa.get_units()
clean_end_t = time.time()
elapse_c = clean_end_t-clean_begin_t

begin_wu = time.time()
for i in range(50):
connection.write('')
ret = connection.read_until_prompt()
end_wu = time.time()
elapse_wu = end_wu-begin_wu

最佳答案

可能因为 Nagle's algorithm 而延迟发送一个短数据包.

您可以通过在 XP 机器上禁用 Nagle 算法来测试它(Google 了解如何做到这一点)。

关于python - Windows xp 和 Linux 中的 Telnet 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3818345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com