我有一个基于Python的telnetlib推动的库。 最近,我注意到在Windows XP和Linux的性能是如此不同。在Windows XP和Linux的Telnet性能
下面的脚本,我设计了三种操作,“得单位”,“只需按回车”,“得与选择单位”
“获得单位”有一长串的回报,“得与选择单位”返回短字符串,并且“只需按Enter”将返回最短的字符串。
让我们猜测,这将花费更多的时间,似乎它的顺序应该是“获取单位”,“获取具有选项的单位”,然后“只需按Enter”。
,但实际的结果是Windows XP中:
得到单位:3.67200016975小号 的选项得到单位:10.0319998264小号 只需按ENTER键:10.0小号
在Ubuntu相同的测试: 得到单位:3.91432785988 得到单位选择:2.86995506287 只需按ENTER键: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
谢谢。我知道了:)。 0.2s延迟是由windows的“延迟ACK算法”引起的,其默认值为0.2s – Rainman 2010-09-29 09:33:56