【问题标题】:x86 version starts faster than x64/Any CPUx86 版本启动速度比 x64/Any CPU 快
【发布时间】:2015-09-06 06:42:40
【问题描述】:

前段时间,我注意到我的应用程序的发布版本比调试版本慢 2 倍(发布 10-12 秒,调试 4-5 秒)。那是因为我将平台目标设置为 Any CPU 用于发布构建和 x86 用于调试构建。当我将发布配置更改为 x86 时,两个版本需要相同的时间才能启动。

我不明白为什么将平台设置为 Any CPU 或 x64 会大大减慢应用程序的启动速度。

在我的应用程序中,我使用以下库:

  • EF6
  • Lo​​g4Net
  • 福迪
  • Autofac
  • DevExpress WPF 控件

也许使用过的库之一会减慢我的应用程序启动速度?

【问题讨论】:

    标签: c# wpf performance


    【解决方案1】:

    .NET 目前(4.6 之前)为 x86 和 x64 平台提供不同的 JIT 引擎,并且它们具有不同的启动时间。在 4.6 中,引擎会更相似,启动时间应该会减少。

    如果是这个原因,您已经可以使用 4.6 预版本进行测试。

    https://stackoverflow.com/a/29595194/1806780也对此进行了一些讨论

    【讨论】:

    • 是的,我知道 JIT 仅适用于第一个应用程序启动 - 需要将 CIL 编译为机器代码。因此,当我第二次、第三次等运行时,应用程序启动不应该依赖于 JIT。我在吗?
    • @rraszewski 每次都依赖于 JIT。 JIT 不会在启动之间缓存任何代码,仅在应用程序运行时。如果要保留本机代码,则必须使用 ngen。
    • 好的,我会检查 4.6 JIT 编译器。但是不同类型的 jit 编译呢? telerik.com/blogs/understanding-net-just-in-time-compilation对此有何评论?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    • 2011-05-05
    • 2019-04-18
    相关资源
    最近更新 更多