几周前,我编写了一个简单的Ruby脚本,在Windows XP环境中测试了一些FTP命令。一切都如预期那样工作,我甚至没有意识到代码运行所需的时间(我猜最多为3-4秒)。
几天前,我正在开发的一个更复杂的Ruby应用程序开始运行得非常慢。在调查问题时,我将问题隔离到了FTP命令上。现在我重新运行了原始的测试脚本,需要超过两分钟的时间才能运行。命令行FTP基本上是即时的。
ruby目录结构中没有更改任何文件。我认为没有安装任何新应用程序-当然没有其他应用程序在运行。
有人能建议为什么以下代码应该运行得非常慢吗?手动计时print
语句之间的间隔表明nlst
和ls
每个需要约65秒!分析器给出了nlst
总毫秒/调用16,ls
总毫秒/调用31,更可信。
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