作者:倩倩倩倩倩倩雯- | 来源:互联网 | 2023-02-04 14:17
我读到--runInBand标志在CI服务器上将 Jest测试持续时间加快了50%.我无法在网上找到关于该标志做什么的解释,只是它允许测试在同一个线程中顺序运行.
为什么在同一个线程中运行测试并按顺序使其更快?直觉上,不应该让它变慢吗?
1> DarkCygnus..:
阅读您的链接页面和一些其他相关来源(如此github问题),一些用户发现:
... --runInBand
在资源有限的环境中使用帮助.
和
... --runInBand
我们的测试时间超过1.5小时(实际上我不知道多长时间因为詹金斯在1.5小时内超时)到大约4分钟.(注意:我们的构建服务器资源非常糟糕)
我们可以看到,这些用户在他们的机器上的性能有所改善,即使他们的资源有限.如果我们--runInBand
从文档中读取标志所做的内容,它会说:
别名:-i.在当前进程中以串行方式运行所有测试,而不是创建运行测试的子进程的工作池.这对调试很有用.
因此,考虑到这些评论和文档,我认为性能的提高是由于现在该过程在单个线程中运行.这极大地帮助了有限资源的计算机,因为它不必花费内存和时间来处理和处理线程池中的多个线程,这个任务可能因其有限的资源而过于昂贵.
但是,我相信只有当您使用的机器资源有限时才会出现这种情况.如果你使用一个更"强大"的机器(即:几个核心,体面的RAM,SSD等)使用多个线程可能会比运行一个更好.
2> 小智..:
在多线程中运行测试时,请为每个线程创建一个缓存。使用--runInBand
jest 运行时,请为所有测试使用一个缓存存储。
我运行20个相同的测试文件后发现它,首先使用key --runInBand
,第一个测试花费25秒,下一个相同的测试每个花费2-3s。
当我运行无--runInBand
键测试时,每个相同的测试文件将在25秒内执行。