Mac OSX上的Ruby执行2个目录之间巨大而奇怪的时差

Mac OSX上的Ruby执行2个目录之间巨大而奇怪的时差,ruby,macos,Ruby,Macos,我在MacOSX上面临着一个非常奇怪的情况。 这已经在两台Mac电脑(一台Macbook和一台MacMini服务器)上进行了复制 实际上,我在两个不同的目录中运行相同的ruby代码。在第一个目录中,执行时间为7秒,在第二个目录中执行时间为0.191秒。 两者之间绝对没有区别 gspider@b1-3 ~£ time ruby sb2.rb #<struct recno=2001, name="Amazon", ticker="MPS", tradeprice=185.5, traded

我在MacOSX上面临着一个非常奇怪的情况。 这已经在两台Mac电脑(一台Macbook和一台MacMini服务器)上进行了复制

实际上,我在两个不同的目录中运行相同的ruby代码。在第一个目录中,执行时间为7秒,在第二个目录中执行时间为0.191秒。 两者之间绝对没有区别

gspider@b1-3 ~£ time ruby  sb2.rb 
#<struct recno=2001, name="Amazon", ticker="MPS", tradeprice=185.5, tradedate="2012-04-        28", quantity=45, totalposition=8347.5>
但还有更多。即使是一个简单的ruby脚本获取一个不存在的文件,在这两个目录中的行为也不同:请注意,它使用的是相同的ruby版本

gspider@b1-3 ~£ time ruby sb3.rb
/Users/spider/.rvm/gems/ruby-1.9.3-p125/gems/KirbyBase-2.6.1/lib/kirbybase.rb:520:in      `get_table': Table not found! (RuntimeError)
from sb3.rb:8:in `<main>'

real    0m7.885s
user    0m7.240s
sys 0m0.642s


gspider@b1-3 ~/Sites£ time ruby  sb3.rb
/Users/spider/.rvm/gems/ruby-1.9.3-p125/gems/KirbyBase-2.6.1/lib/kirbybase.rb:520:in    `get_table': Table not found! (RuntimeError)
from sb3.rb:8:in `<main>'

real    0m0.183s
user    0m0.156s
sys 0m0.023s
gspider@b1-3次ruby sb3.rb
/Users/spider/.rvm/gems/ruby-1.9.3-p125/gems/KirbyBase-2.6.1/lib/KirbyBase.rb:520:在“get_表”中:找不到表!(运行时错误)
从sb3.rb:8:in`'
真实0m7.885s
用户0m7.240s
系统0.642s
gspider@b1-3~/Sites英镑time ruby sb3.rb
/Users/spider/.rvm/gems/ruby-1.9.3-p125/gems/KirbyBase-2.6.1/lib/KirbyBase.rb:520:在“get_表”中:找不到表!(运行时错误)
从sb3.rb:8:in`'
实际0.183s
用户0.156s
系统0m0.023s

这种高度不稳定的行为的原因是什么?同样,这是同一台机器,您可以从bash标记中看到,只有两个不同的目录。我已经能够在另一台mac电脑上复制相同的错误,但“受感染”的路径/目录不同,因此看起来有些目录/路径随机受到ruby慢速延迟执行诅咒。

KirkyBase打开文件夹中的所有表(.tbl文件)


如果某个文件夹中有较多较大的文件,而另一个文件夹中有较少或较小的文件,这可能解释了时间上的差异。

如果颠倒检查目录的顺序,会发生什么情况?密码是什么?到目前为止,我猜某个地方正在进行一些缓存。是的,缓存是可能的。另外,~/Sites通常包含一些文件,如index.html。如果脚本正在搜索这样一个文件,它可能会立即在~/Sites目录中找到它,但在另一个目录中放弃之前必须执行彻底的搜索。颠倒顺序会返回相同的结果。在“cursed”目录中,它总是以5-6秒的延迟运行该文件是一个简单的脚本,使用KirbyBase(ruby gem)从表(平面文件)中获取3个结果。两个目录中的文件相同。删除文件/获取不存在的文件会得到与上述7.8秒相同的结果,一种情况是0.018秒,另一种情况是0.018秒
real    0m0.191s
user    0m0.164s
 sys    0m0.023s
gspider@b1-3 ~£ time ruby sb3.rb
/Users/spider/.rvm/gems/ruby-1.9.3-p125/gems/KirbyBase-2.6.1/lib/kirbybase.rb:520:in      `get_table': Table not found! (RuntimeError)
from sb3.rb:8:in `<main>'

real    0m7.885s
user    0m7.240s
sys 0m0.642s


gspider@b1-3 ~/Sites£ time ruby  sb3.rb
/Users/spider/.rvm/gems/ruby-1.9.3-p125/gems/KirbyBase-2.6.1/lib/kirbybase.rb:520:in    `get_table': Table not found! (RuntimeError)
from sb3.rb:8:in `<main>'

real    0m0.183s
user    0m0.156s
sys 0m0.023s