Visual studio 性能分析优化

Visual studio performance profiling optimization

我有一个围绕 WebAPI 项目的相当大的解决方案。我 运行 研究了特定 Web 服务的一些性能问题,并使用 VS2013 中内置的性能分析器来查找瓶颈并进行处理。最终我将 HTTP 请求的响应时间从大约 500 毫秒减少到 50 毫秒(我使用外部应用程序执行重复请求并记录往返时间)。

但是,我只在 运行从性能分析器工具中使用 WebAPI 时才看到这种改进。一旦我直接从 Visual Studio (F5) 或在我们的测试服务器上切换回 运行ning,响应时间就会增加到 400 毫秒左右,仍然比原来的 500 毫秒有所改进,但并不十分出色.

如果我 运行 它处于调试模式或发布模式,它只会产生轻微的差异。将 "debug info" 设置为 "none" 而不是默认的 "pdb-only",对所有涉及的项目都有一点帮助,将平均响应时间降低到 350 毫秒左右。

我这辈子都搞不懂性能分析器工具做了什么来进一步优化代码。我看到它有多快,这让我很生气 运行,但我无法达到相同的性能。

事实证明,性能分析器并没有做任何不同的事情来优化代码。但它 运行 IIS Express 没有启用任何调试器。

通过转到 Web API 项目的属性,并切换到 Web 选项卡,我可以取消选中所有调试器,现在调试期间的响应时间与我在 运行 分析器。显然,禁用 ASP.NET 调试器会阻止对代码进行任何调试。

米卡尔是对的。

这个性能差异问题(做profiling比调试好)也困扰了我几个小时,我什至尝试将代码从WebAPI移动到Console Application进行测试,Console Application有性能与分析 Web API.

时一样好

然后我发现是因为ASP.NETdebugger开启了debugging模式,消耗很大CPU,de-check那个debugger后,性能又回来了,一样好控制台应用程序和分析模式