1

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

4

2 回答 2

2

这些应用程序会在 x64 架构上以相同的性能运行吗?总结一下我的问题,虽然针对 x64 架构的好处,比如内存超过 4gb,但在 x64 机器上开发的应用程序比在 x86 上开发的应用程序有任何优势,配置 anycpu?

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

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

于 2012-08-01T21:24:58.427 回答
0

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

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

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

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

于 2012-08-01T21:47:17.223 回答