x86机器上的x64开发.net

时间:2012-08-01 21:22:20

标签: .net x86-64 cpu-architecture

我试图了解x86和x64架构上.Net应用程序开发的差异。假设我已经在x64和x86上使用相同的源开发了一个应用程序,我的配置是anycpu(或者它可以是x64与x64机器)。这些应用程序是否都在x64架构上以相同的性能运行。总结一下我的问题,虽然针对x64体系结构的优势,比4gb更多的内存,在x64机器上开发的应用程序比使用anycpu配置在x86上开发的应用程序有任何优势吗?

2 个答案:

答案 0 :(得分:2)

  

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

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

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

答案 1 :(得分:0)

正如Reed Copsey所说,他们将以相同的表现运行。

除了性能方面的考虑之外,我只想补充一点,如果可能的话,你仍然应该尝试在x64机器上测试应用程序。我已经看到了AnyCPU应用程序可能发生的一些问题:

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

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