【问题标题】:.net development for x64 on x86 machine在 x86 机器上为 x64 开发 .net
【发布时间】:2012-08-01 21:22:19
【问题描述】:

我试图了解在 x86 和 x64 架构上开发 .Net 应用程序的区别。假设我在 x64 和 x86 上使用相同的源开发了一个应用程序,并且我的配置是 anycpu(或者它可以是 x64 与 x64 机器)。这些应用程序会在 x64 架构上以相同的性能运行吗?总结一下我的问题,虽然针对 x64 架构的优势,比如内存超过 4gb,但在 x64 机器上开发的应用程序比在 x86 上使用 anycpu 配置开发的应用程序有什么优势?

【问题讨论】:

    标签: .net x86-64 cpu-architecture


    【解决方案1】:

    这些应用程序在 x64 架构上运行的性能是否相同?总结一下我的问题,虽然针对 x64 架构的优势,比如比 4gb 更多的内存,但在 x64 机器上开发的应用程序比在 x86 上使用 anycpu 配置开发的应用程序有什么优势?

    没有。以 AnyCPU 为目标的应用程序在 x64 上的运行与以 x64 为目标的应用程序完全相同。 AnyCPU 将导致应用程序在 64 位操作系统上运行时使用 64 位 CLR(与针对 x64 构建的方式完全相同。)

    它们在 64 位系统上的运行与在 32 位操作系统上的运行方式不同,但是,因为 64 位 CLR 确实具有不同的优化和性能特征。

    【讨论】:

      【解决方案2】:

      正如 Reed Copsey 所说,它们将以相同的性能运行。

      除了性能考虑之外,我只是想补充一点,如果可能,您仍应尝试在 x64 机器上测试应用程序。我发现 AnyCPU 应用程序可能会遇到一些问题:

      • 本机 DLL 仅适用于一种架构。例如,如果您的应用程序是为 AnyCPU 编译的,但使用的是 32 位本机 DLL,那么它将在 x86 上运行良好,但在 x64 上会崩溃,因为 64 位进程将无法使用该 DLL。

      • 依赖于 IntPtr 是一个特定的大小。例如,如果您假设它的大小为 4 字节,那么当它作为 64 位进程运行时会导致错误,其中sizeof(IntPtr) 是 8。

      【讨论】:

      • Reed Copsey 实际上说 64 位 CLR 有不同的优化和性能特点
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-26
      • 2016-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多