Пару недель назад я написал простой скрипт на Ruby для проверки нескольких команд FTP в среде Windows XP. Все работало так, как ожидалось, и я даже не знал, сколько времени потребовалось для запуска кода (я бы предположил, что самое большее 3-4 секунды).
Несколько дней назад гораздо более сложное Ruby-приложение, которое я разрабатываю, начало работать очень медленно. Когда я исследовал проблему, я изолировал проблему с командами FTP. Теперь я перезапустил оригинальный тестовый сценарий, и его запуск занимает более двух минут . FTP командной строки по существу мгновенный.
Нет файлов в структуре каталогов ruby были изменены. Я не верю, что какие-либо новые приложения были установлены - конечно, никакие другие приложения не работают.
Кто-нибудь может подсказать, почему следующий код должен работать так медленно? Временная привязка интервалов между операторами print
позволяет предположить, что nlst
и ls
занимают около 65 секунд каждый! Профилировщик дает гораздо более правдоподобную общую мс / вызов 16 для nlst
и 31 для ls
.
require 'net/ftp'
Net::FTP.open("ip_redacted", "user_redacted", "password_redacted") do |ftp|
ftp.chdir("dir_redacted")
files = ftp.nlst
print "files = #{files.sort!}\n"
list = ftp.ls
print "list = #{list}\n"
file = "filename_redacted"
size = ftp.size(file)
print "size = #{size}\n"
end