我正在阅读parallel_tests来源,但还不了解它,所以我想我会跳到追逐并在这里问我的问题。
parallel_tests gem是否同时或按顺序运行甜蜜中的所有测试? (是否可以同时运行多个测试)
当我运行并行测试时,似乎就是这样:
我想知道这是因为使用四个处理器运行rake parallel:test(75分钟)和rake test(85分钟)之间的时差差异很小。
并行测试的输出使它看起来像是按顺序运行测试组。
我的输出如下:
首先会指出它找到了我所有的处理器:
rake parallel:test[functional]
4 processes for 223 tests, ~ 55 tests per process
然后它似乎按顺序运行每个测试子集:
......
841 tests, 3605 assertions, 0 failures, 3 errors, 0 skips
Test run options: --seed 15002
oaded suite -e
...............
Finished in 1928.494289 seconds.
542 tests, 2296 assertions, 0 failures, 0 errors, 0 skips
Test run options: --seed 30455
oaded suite -e
....
etc...
那么,这是我的输出技巧,还是它真正依次运行每组测试。我认为我会更好地改善时间,而且这对我需要并行化以使我的测试运行的其他东西有很大影响。
答案 0 :(得分:1)
如果您的测试需要大量的设置/拆卸代码或争用像IO这样的资源,那么您可能无法通过并行化来获得显着的性能提升。 parallel_test确实并行运行你的测试,但它按顺序缓冲输出,因为如果4个进程只是直接写入STDOUT
并且消息相互交错,那将很难理解。
如果您不确定测试是并行运行,请启动top
或其他一些此类工具(例如,OS X上的活动监视器)并观察正在发生的事情。< / p>
这不是你的问题的答案,但你可能会有更多的收获来优化你的841测试,需要半小时才能更快地运行,而不是尝试并行化它们。