【发布时间】:2012-11-30 14:37:35
【问题描述】:
我正在处理一个代码存在性能问题的项目。
我做了一些我认为会提高性能的更改,但没有真正的方法来衡量我的更改对它的影响。
我编写了一个单元测试,它按照当前实现的方式执行操作,并使用Stopwatch 来监控函数运行的速度。我还编写了一个类似的单元测试,它的处理方式略有不同。
如果测试一起运行,一个需要 1 秒才能完成,另一个需要 73 毫秒。 如果测试分开运行,它们都需要大约 1 秒才能完成(是的.. 我所做的更改似乎没有太大变化)。
如果测试相同,我有同样的问题,一个比另一个跑得快。
Visual Studio 是否在幕后做一些事情来提高性能?如果是,我可以关闭它吗?
我尝试将测试移动到不同的文件中,但没有解决我遇到的问题。
我希望能够运行所有测试,但让它们像一次只运行一个测试一样运行。
【问题讨论】:
-
我认为这取决于代码。你需要初始化一些类,这在第二个测试中完成。
-
我愿意打赌第一个测试总是比第二个测试运行得快,而且我也愿意打赌这是因为需要一些设置,而第一个测试就是这样做的,并且第二次测试不需要重做。
-
如果您在调试器中运行,或者在调试构建的程序集中运行,或者使用分析器 API (Moles),则没有时间可以依赖。
-
标准答案:使用分析器。
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
标签: c# unit-testing testing visual-studio-2012 performance-testing