编译后的程序在我切换到VS 2010后运行速度慢了很多

6
我们公司的一个关键应用程序(C#)处理高分辨率图像,我们已经做出了很大的努力来进行优化。它在大约2.5秒内执行超过250万次操作。
我们多年来一直使用VS 2005,上周将所有内容转移到了VS 2010。
完全相同的项目代码。
现在,当我构建应用程序并运行它(在VS 2010 IDE之外),每次执行相同的操作都需要5秒以上。
这是一个大问题,绝对让我头疼。我目前将其设置为发布模式(与我在VS 2005中设置的相同)。
有什么想法会导致执行时间加倍,而代码完全相同吗?

当你切换到Visual Studio时,你是否也更改了目标框架版本? - Justin Niessner
1个回答

4
您可能会发现这个变化,是因为您从.NET 2.0运行时切换到了.NET 4.0运行时。
您提到您已经高度优化了代码的性能。 我猜测有些优化实际上正在损害您的性能,而不是帮助您(因为您依赖于Framework的内部实现细节进行优化,而这些细节已经改变)。
我的建议是通过分析器(例如Redgate的ANTS Performance Profiler或JetBrain的DotTrace)运行您的代码,并查看新的瓶颈在哪里。 您可以从那里开始解决问题。

我会看一下这些。优化方案相当基础/实用,比如在可以使用Byte的情况下不使用Int32等。没有花哨的技巧。 - Ducain
@Ducain:如果Justin所建议的是真的,你也可以尝试在VS 2010中针对.NET 2.0进行优化,看看能否将性能恢复到原来的水平。 - Jeff Ogata
@Adrift - 很遗憾我不能这样做。由此应用程序引用的项目现在需要目标为4(出于必要)。该项目是数据访问层,因此并不影响我在处理的代码区域,但为了编译解决方案,我现在必须将目标设置为.NET 4。 - Ducain
将此标记为答案。这绝对是框架的问题。至于导致这个问题的具体框架更改-谁知道呢。然而,我采纳了Justin的建议,正在使用Red Gate的ANTS试用版,并且非常喜欢它。由于这个工具,已经节省了大量时间。 - Ducain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接