为什么在TeamCity中运行测试比直接在NUnit中运行要花更长时间?

9
我有一些关于C#性能的测试,基本上是运行两种不同的方法并检查其中一个运行速度比另一个快得多。
当我在NUnit中本地运行它们时,其中一个测试运行速度是另一个的十倍,因此我编写了一个使用Stopwatch检查它至少快两倍(以防止回归)的NUnit测试。但是当我在TeamCity中运行测试时,快速方法只比慢速方法快1.5倍? 我希望硬件差异会产生一些影响,但不至于这么多。这可能是什么原因?
1个回答

14

回答自己的问题,问题出在TeamCity测试构建中开启了代码覆盖率,这导致两个方法的运行时间更加接近。希望这个答案能对将来有所帮助。


1
我实际上没有看到代码覆盖率开启,但在构建服务器上运行测试需要近一个小时的时间,而在本地只需要大约7-8分钟。你有什么想法吗? - Adam Levitt
你是否在两个上运行相同类型的程序(即Debug而不是Release)?同时查看构建服务器上测试的持续时间--它们都同样缓慢,还是其中一个要慢得多? - Matthew Strawbridge
非常感谢您的回复!很多操作实际上都比较慢,不只是一个,不幸的是。它们正在进行数据库调用,但这并不应该真的有影响,对吧?我相信我在两个环境中都在运行调试模式。 - Adam Levitt
可能有各种原因。构建服务器是否正在忙于其他任务?NUnit的版本是否相同?构建服务器和数据库之间的网络速度是否缓慢?获取构建服务器的工件并通过本地的 NUnit 运行它们,看看是否能够找出差异,这也许值得一试。 - Matthew Strawbridge

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接