我有一个单元测试,包括一个秒表,用于测量某些 .NET 库调用的执行时间。
与从 Visual Studio 测试资源管理器启动完全相同的测试相比,从 ReSharper 测试会话启动单元测试时,执行时间显着缩短。我的意思是一半,从 ReSharper 启动时的执行时间是从 VS Test Explorer 启动时的执行时间的一半。
我的问题是 → 是什么导致了差异?
ReSharper:
VS 测试资源管理器:
一切都是在Release模式下编译的 测量的代码未在单元测试中实现,测试仅从编译的程序集中调用测量函数
我创建了一个执行相同测试的控制台应用程序 → 测量的执行时间与 VS Test Explorer 类似。
ReSharper 测试会话运行程序如何实现比常规 .NET 控制台应用程序更好的性能?
我是 ReSharper 测试运行程序的作者,但我不知道。 :)
首先,我们的测试运行程序(以及 VS 的)涵盖了多种场景。它们是不同的运行时(.NETFramework | .NETCore | Mono)、不同的目标框架、不同的测试框架。要知道在哪里查看,我首先需要了解您的设置。
但是,我们的运行程序的调用速度比普通控制台应用程序的调用速度更快的说法确实很奇怪。现在唯一想到的是我们默认为 .NETFramework 启用服务器垃圾收集模式。