gpt4 book ai didi

ruby-on-rails - parallel_tests gem 是否按顺序运行您的测试套件?

转载 作者:太空宇宙 更新时间:2023-11-03 16:31:07 25 4
gpt4 key购买 nike

我正在通读 parallel_tests 源代码,但还不理解它,所以我想我应该直截了本地在这里问我的问题。

parallel_tests gem 是同时还是依次运行您的 sweet 中的所有测试? (是否可以同时运行多个测试)

当我运行并行测试时,它看起来是这样的:

  1. 找到我所有的测试
  2. 将它们分成偶数堆(每个处理器一个)
  3. 按顺序运行每一堆测试

我想知道这一点,因为使用四个处理器运行 rake parallel:test(75 分钟)和 rake 测试(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...

所以,这是我输出的一个技巧,还是它真的在一个接一个地运行每组测试。我在想我会在时间上得到更好的改进,而且这对我需要并行化以使我的测试运行的其他东西有很大的影响。

最佳答案

如果您的测试需要大量设置/拆卸代码或争用 IO 等资源,那么并行化它们可能不会带来显着的性能提升。 parallel_test 确实会并行运行您的测试,但它会按顺序缓冲输出,因为如果 4 个进程只是直接写入 STDOUT 并且消息相互交错,则很难理解。

如果您不确定测试是否并行运行,请打开 top 或其他类似工具(例如,OS X 上的 Activity Monitor)并观察发生了什么。

这不是您问题的答案,但优化 841 测试需要半小时才能更快地运行,而不是尝试将它们并行化,您可能会获得更多 yield 。

关于ruby-on-rails - parallel_tests gem 是否按顺序运行您的测试套件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15710270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com