x86版本启动速度比x64/任意CPU版本更快

4
不久前,我注意到我的应用程序发布版的启动速度比调试版慢2倍(发布版需要10-12秒,而调试版只需要4-5秒)。这是因为我将平台目标设置为 Any CPU 以进行发布构建,而在调试构建中将其设置为 x86 。当我将发布配置更改为x86时,两个版本的启动时间相同。
我不明白为什么将平台设置为Any CPU或x64会如此拖慢应用程序的启动速度。
在我的应用程序中,我正在使用以下库:
EF6 Log4Net Fody Autofac DevExpress WPF控件
也许其中一个使用的库会拖慢我的应用程序启动?
1个回答

4

.NET目前(4.6之前的版本)在x86和x64平台上使用不同的JIT引擎,它们具有不同的启动时间。在4.6中,这些引擎将更加相似,并且启动时间应该差异会减少。

如果您怀疑这是问题所在,您可以使用4.6预发布版本进行测试。

关于此还有一些讨论,请参见https://stackoverflow.com/a/29595194/1806780


是的,我明白JIT只在第一次应用程序启动时起作用 - 需要将CIL编译成机器代码。因此,当我第二次,第三次等运行时,应用程序启动不应该依赖于JIT。我这么说对吗? - rraszewski
1
@rraszewski 这取决于JIT。 JIT每次都不会缓存任何启动代码,只有在应用程序运行时才会缓存。如果您想保留本机代码,则必须使用ngen。 - Sami Kuhmonen
好的,我会检查4.6 JIT编译器。但是不同类型的JIT编译呢? http://www.telerik.com/blogs/understanding-net-just-in-time-compilation 对此有什么评论吗? - rraszewski

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