【发布时间】:2011-04-18 14:46:07
【问题描述】:
我有一个基于 Python telnetlib 的库。 最近,我注意到 windows xp 和 Linux 的性能差异很大。
在脚本下面,我设计了三个操作,“get units”、“just press enter”、“get units with options”
“get units”返回长字符串,“get units with options”返回较短字符串,“just press enter”返回最短字符串。
让我们猜一下,这将花费更多时间,似乎它的顺序应该是“获取单位”,“获取带有选项的单位”,然后“只需按 Enter”。
但在 windows xp 中的实际结果是:
获取单位:3.67200016975 s 获取带有选项的单位:10.0319998264 s 只需按 Enter: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
【问题讨论】:
标签: python windows linux sockets telnet