C# 为什么我的代码在运行性能分析时更快?

C# 为什么我的代码在运行性能分析时更快?,c#,visual-studio-2010,C#,Visual Studio 2010,我这里有个难题。我一直在尝试加速某个函数,现在当我运行应用程序时,运行该函数需要约16-17秒 现在,如果我在VS2010中运行相同的代码,同时运行性能分析,以便找到较慢的部分,代码将在6-7秒内执行。现在,如果我的代码运行得这么快,那么应用程序完全可以接受 我尝试过通过调试和发布配置文件运行代码(没有性能分析),几乎没有区别 有人知道这里会发生什么吗 注意事项:该函数使用了相当多的LINQ to SQL,我使用的性能分析是CPU采样。我认为您应该关注代码中最慢的部分,并对其进行优化。如果您确定

我这里有个难题。我一直在尝试加速某个函数,现在当我运行应用程序时,运行该函数需要约16-17秒

现在,如果我在VS2010中运行相同的代码,同时运行性能分析,以便找到较慢的部分,代码将在6-7秒内执行。现在,如果我的代码运行得这么快,那么应用程序完全可以接受

我尝试过通过调试和发布配置文件运行代码(没有性能分析),几乎没有区别

有人知道这里会发生什么吗


注意事项:该函数使用了相当多的LINQ to SQL,我使用的性能分析是CPU采样。

我认为您应该关注代码中最慢的部分,并对其进行优化。如果您确定哪些部分比其他部分花费的时间更长,则不必考虑以秒为单位的绝对持续时间,而只需考虑相对时间


即使您看到整个应用程序在7秒内执行,如果有一些方法花费了整个时间的40%来尝试优化它们,那么即使没有启用性能分析,您也肯定会受益于此微调,并且如果最初的执行时间约为17秒,那么总执行时间将下降得更多。

当您在非性能分析中输入函数时,您是否看到大量dll被加载分析案例?我想知道输入此函数是否会导致大量DLL加载,而在性能分析案例中,这些DLL已在前面加载。

Heisenbug。如果你在发布模式下编译(相对于调试),你会得到同样的16-17秒吗?你是否在VS之外运行程序?简单地在VS中运行一个程序并附加调试器会禁用很多抖动优化。CodeInChaos-我确实注意到外部和内部VS之间的巨大差异,是的,但我期待着。事实上,我认为从这里给出的答案中,我可能得到了答案:性能分析可能编译应用程序,然后在VS之外运行流程(没有容器/vhost)并将其自身附加到实际流程中-因此,消除了建议的所有VS开销+1,您最好花时间进行优化,而不是研究时间差的原因。是的,但问题是,它在分析“内部”进行了完美优化,而不是在外部。不是真的,no-或至少nothing取消向函数添加带有日期时间戳的跟踪语句,并尝试缩小发生减速的位置,16-17秒从何而来,检查函数调用前的时间写入,然后在输入时立即放开,因为听起来你必须用老式的方式进行绩效分析。我已经找到了问题所在并解决了,但问题的目的是“为什么”问题发生了,而不是如何绕过这样一个问题问题是什么,你是如何解决的?问题本身在这里并不相关-只是一个愚蠢的错误,我做了太多的转换,因为一些DBML代码不理解某个东西是否是十进制。这里的实际问题,我只有一个理论——见原始的qestion。