Ruby FTP在Windows XP下极其缓慢

时间:2009-05-17 10:24:58

标签: windows ruby ftp

几周前,我编写了一个简单的Ruby脚本来测试Windows XP环境中的几个FTP命令。一切都按预期工作,我甚至都不知道代码运行所花费的时间(我猜最多只需3-4秒。)

几天前,我正在开发的更多涉及的Ruby应用程序开始运行得非常慢。在调查问题时,我将问题与FTP命令隔离开来。我现在重新运行原始测试脚本,运行需要两个分钟。命令行FTP本质上是即时的。

ruby​​目录结构中没有文件被更改。我不相信任何新的应用程序已经安装 - 当然没有其他应用程序正在运行。

任何人都可以建议为什么以下代码应该运行得这么慢?手动计算print语句之间的时间间隔表明nlstls每个约需65秒!对于nlst而言,探查器的总ms /呼叫总数为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

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:2)

我有一个类似的问题,发现被动模式提高了速度,例如。 ftp.passive=true

答案 2 :(得分:0)

尝试删除#sort!(只是puts "files = #{files}"),因为如果目录中有大量文件,这可能相当昂贵。这将考虑到#nlst#ls

附近的大滞后