Spring vs. Zeus性能问题:Spring在第一次运行后没有更快地运行测试?

时间:2014-01-16 18:39:55

标签: ruby-on-rails minitest zeus rake-test

所以我正在努力改善测试执行时间,并且一直在遵循一些优秀的建议(最值得注意的是,Railscasts 412)。

Zeus似乎工作正常(除了需要您输入zeus test test才能运行Minitest套件的奇怪之外。)

以下是zeus的定时输出:

基线(佣金测试):

$ time rake test
Run options: --seed 62848

# Running tests:

........

Finished tests in 0.117071s, 68.3346 tests/s, 68.3346 assertions/s.

8 tests, 8 assertions, 0 failures, 0 errors, 0 skips

real    0m5.771s
user    0m4.477s
sys     0m0.872s

和宙斯一起:

$ time zeus test test
Run options: --seed 10325

# Running tests:

........

Finished tests in 0.126365s, 63.3087 tests/s, 63.3087 assertions/s.

8 tests, 8 assertions, 0 failures, 0 errors, 0 skips

real    0m0.765s
user    0m0.209s
sys     0m0.030s

好。 5.7s低至0.7s。

现在,春天,我只是没有看到第一次运行后的改善。我正在运行Spring gem 1.1.0beta4,按照描述安装(添加到Gemfile,然后运行bundle exec spring binstub --all)。

这就是我所拥有的:

基线,第一次执行(佣金测试):

time bin/rake test
Run options: --seed 49915

# Running tests:

........

Finished tests in 0.108359s, 73.8287 tests/s, 73.8287 assertions/s.

8 tests, 8 assertions, 0 failures, 0 errors, 0 skips

real    0m6.265s
user    0m0.072s
sys     0m0.020s

确认弹簧正在运行:

$ spring status
Spring is running:

 2990 spring server | gdc4 | started 43 secs ago  
 2991 spring app    | gdc4 | started 43 secs ago | test mode    

再次运行测试...

$ time bin/rake test
Run options: --seed 27416

# Running tests:

........

Finished tests in 0.132677s, 60.2968 tests/s, 60.2968 assertions/s.

8 tests, 8 assertions, 0 failures, 0 errors, 0 skips

real    0m3.885s
user    0m0.069s
sys     0m0.014s

所以有点加速,但仍然差不多4秒钟才能执行。与此同时,顺便说一句,导轨控制台可以加载更快的弹簧加载速度....< 1秒。

所以,我的问题是:为什么Zeus能够在测试中获得数量级的加速(5.7s - > 0.7s)但Spring不是?

运行Rails 4.0.2,Ruby 2.0.0 btw。

4 个答案:

答案 0 :(得分:3)

你无法运行

  

rake test

你需要运行

  春天佣金试验

示例:

时间耙-T

10.737s

时间耙-T

10.811s#没有改善,如你所说

时间春天耙-T

18.468s

时间春天耙-T

1.140s#巨大改进

答案 1 :(得分:0)

我只玩了一点弹簧并且没有比较时间对抗宙斯(我更喜欢)但我的猜测是你仍然看到弹簧本身的缓慢[红宝石]启动时间。 Zeus没有任何相关内容,因为它是用Go编写的。

答案 2 :(得分:0)

我在这看到了同样的不同。 例如,运行rails服务器:  与宙斯< 1秒  春天~4s

答案 3 :(得分:0)

可能是因为zeus test没有运行db:reset

在我的一个应用程序中,Spring在5-6秒内运行测试,而Zeus在大约0.5秒内运行它们,这肯定是由于Spring每次重新加载数据库。