【问题标题】:Are there any advantages to compiling an assembly as x64?将程序集编译为 x64 有什么好处吗?
【发布时间】:2009-06-07 13:34:22
【问题描述】:

假设我有一个需要在 x86 和 x64 平台上运行的 .Net Framework 3.5 SP1/CLR 2.0 应用程序。还假设出于某种原因,我需要创建单独的 x86 和 x64 安装程序。

反正我有一个特定于 x64 的安装程序,将应用程序本身重新编译为 x64 而不是针对“AnyCPU”有什么好处吗?

除了生成的程序集的标头信息之外,将目标设置为 x64 是否会改变任何内容?

【问题讨论】:

  • (删除标签程序集,因为几乎所有带有该标签的消息都是关于汇编程序,而不是 .NET 程序集)

标签: .net x86 64-bit compilation


【解决方案1】:

如果您指定 x64,它会更改程序的一些默认内存设置,使其在内存压力较大的程序中稍微提高性能。使用 x64 编译时分配更大的线程堆栈 (link)

【讨论】:

    【解决方案2】:

    只要您没有Ngen'ing 任何程序集,最好保留为“AnyCPU”,并让 JIT 以体系结构为目标。

    【讨论】:

      【解决方案3】:

      我发现,当我包装原生 x86 dll 时,需要为 x86 平台编译包装程序集,否则我会在 x64 机器上抛出 BadImageFormatException。然后就像滚雪球一样,因为所有引用该程序集的程序集也需要针对 x86 平台进行编译。

      可能是我做错了什么,但这就是我发现的。如果我不使用本机 dll,那么我会将所有程序集保留为“AnyCPU”。

      【讨论】:

        【解决方案4】:

        我对 .net 程序集了解不多,但一般来说,如果你知道一个程序只会在 x64 架构中执行,用 x64 机器码编译它,你会得到一些性能提升,但你会失去什么都没有(只要你已经知道它只会在 x64 环境中执行)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-04-08
          • 1970-01-01
          • 1970-01-01
          • 2020-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多