所以我正在努力改善测试执行时间,并且一直在遵循一些优秀的建议(最值得注意的是,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。
答案 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每次重新加载数据库。