【发布时间】:2012-01-22 20:25:05
【问题描述】:
我一直认为 1.9.x 应该比 REE 更快,但是消耗更多的内存。但正如最近向我指出的那样,REE 实际上比执行 RSpec 规范要快,而且差距很大。
$ rvm use ree
$ rvm gemset create sandbox
$ rvm gemset use sandbox
$ gem install rspec
$ time rspec foo_spec.rb
No examples found.
Finished in 0.07346 seconds
0 examples, 0 failures
real 0m0.104s
user 0m0.059s
sys 0m0.015s
在对 1.9.3 做了同样的事情之后,我得到了
$ time rspec foo_spec.rb
No examples found.
Finished in 0.13922 seconds
0 examples, 0 failures
real 0m0.208s
user 0m0.122s
sys 0m0.022s
对于一个空的 gemset,这是两倍,只包含 rspec 并在一个空的规范文件上执行。我发现包含多个宝石的宝石组差异更大。
为什么会发生这种情况,1.9.3 不应该是目前可用的最快版本吗?
我正在运行通过 RVM 在 OS X Lion 上安装的最新版本。
【问题讨论】:
-
您只是测量启动时间,而不是有用任务的实际速度。选择与您的代码匹配的更复杂的东西以获得有用的基准测试结果。
-
另外,请注意文件系统缓存。要获得更准确的结果,请运行每个测试,例如连续运行 20 次,并取最后 15 次运行的中位数。
-
@phs 是的,我知道文件系统缓存,但问题是第一次运行测试时,因为我只会在更改时再次运行它们文件
-
@HolgerJust 我在更复杂的情况下也尝试过同样的事情,结果总是证明 REE 运行规范的速度更快。我发布的示例只是说明性的。我什至尝试完全重新安装 1.9.3 以重新开始。
标签: ruby rspec ruby-enterprise-edition ruby-1.9.3