У меня есть библиотека, основанная на telnetlib Python.И недавно я заметил, что производительность в Windows XP и Linux настолько различна.
ниже сценария, я проектирую три операции: «получить единицы», «просто нажать enter», «получить единицы с параметрами»
«получить единицы» возвращает длинную строку, «получить единицы с опциями» возвращает более короткую строку, а «просто нажмите enter» вернет самую короткую строку.
давайте догадаемся, что будет тратить больше времени, кажетсяего порядок должен быть «получить единицы», «получить единицы с параметрами», затем «просто нажать enter».
, но фактический результат в Windows XP:
получить единицы: 3.67200016975 с получить единицыс параметрами: 10.0319998264 с просто нажмите ввод: 10.0 с
тот же тест в Ubuntu: получить единицы: 3.91432785988 получить единицы с параметрами: 2.86995506287 просто нажмите ввод: 2.05337381363
кажется, что Windows XP имеет хорошиепроизводительность для большого IP-пакета, но для маленького пакета это так плохо.
Я проверил это вручную, используя клиент telnet для Windows, putty.Использование wireshark для захвата данных Telnet.И обнаружите, что для небольшого пакета задержка пакета очень велика, около 0,2 с
Я пытался изменить окно 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