代码之家  ›  专栏  ›  技术社区  ›  ayk

.net在x86机器上开发x64

  •  1
  • ayk  · 技术社区  · 13 年前

    我试图了解在x86和x64架构上开发.Net应用程序的区别。比方说,我在x64和x86上开发了一个源代码相同的应用程序,我的配置是anycpu(也可以是x64和x64机器)。这两个应用程序是否在x64体系结构上以相同的性能运行。总之,我的问题是,虽然目标是x64体系结构的好处,比如说比4gb更多的内存,但在x64机器上开发的应用程序比在x86上开发的配置为anycpu的应用程序有什么优势?

    2 回复  |  直到 13 年前
        1
  •  2
  •   Reed Copsey    13 年前

    这两个应用程序是否在x64体系结构上以相同的性能运行。总之,我的问题是,虽然目标是x64体系结构的好处,比如说比4gb更多的内存,但在x64机器上开发的应用程序比在x86上开发的配置为anycpu的应用程序有什么优势?

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

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

        2
  •  0
  •   Sean U    13 年前

    正如Reed Copsey所说,他们将以同样的表现参赛。

    不过,撇开性能考虑不谈,我只想补充一点,如果可能的话,您仍然应该尝试在x64计算机上测试应用程序。我看到了AnyCPU应用程序可能出现的一些问题:

    • 本机DLL只能在一个体系结构上工作。例如,如果您的应用程序是为AnyCPU编译的,但使用32位本机DLL,那么它在x86上运行得很好,但在x64上崩溃,因为64位进程将无法使用该DLL。

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