我有一個基於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