0

我遇到了一个奇怪的情况,不知道要寻找什么或如何寻找。

我们正在一个 Web 项目中托管一个 Silverlight 项目。此 Silverlight 项目使用 Web 项目托管的 REST 服务进行通信。

现在,当我们在调试模式下运行它时,一切都按预期运行。所以我想分析它并检查我可能会失去性能的所有地方。所以这是有趣的部分。

我运行了 VS2012 Profiler,它正在收集与执行的方法、时间等相关的所有信息。但这次我的项目快如闪电。过去在正常调试下大约需要 1 秒才能执行的查询现在需要不到 200 毫秒。有一个非常密集的查询,在正常模式下执行大约需要 20 秒,但在分析下它需要不到 600 毫秒。

因此,我从中得出的结论是,我的代码和项目能够如此快速地运行,但由于某种原因,在正常调试场景下它并没有那么快。

有人可以了解幕后发生的事情吗?我如何在正常情况下实现这种性能。

我还想提一下,我也尝试过发布模式和发布到 IIS,但这些都没有提供像在分析模式下那样好的性能。

从技术上讲,我之前认为是在分析模式下,性能应该低于正常水平,因为此时 VS2012 也在收集其他数据。

我很困惑。请帮忙。

谢谢

4

1 回答 1

1

我知道您此时可能不需要帮助,但对于其他偶然发现这篇文章的人,我会给我两分钱。

我正在从事的一个 XNA 项目也遇到了同样的问题。在某些情况下,调试和发布模式都出现了巨大的减速。它把我拉到不到 1 FPS。我试图分析问题以解决它,但在分析过程中从未发生过该问题。

我终于发现减速是由我在这种情况下调用的 Console.WriteLine() 引起的。评论它解决了调试和发布版本的问题。显然,Console.WriteLine 实在是太慢了。

于 2013-12-22T23:47:29.327 回答