我虽然有轻微的可能性,它也有32位机上部署部署64位机器上的C#应用程序。 我应该建立两个独立的可执行文件针对x86和x64平台或我应该去为一个单一的可执行内置定位“AnyCPU”平台(在项目属性的编译选项中指定。”会不会有一个C#组件内置目标之间的任何服务表现差异‘AnyCPU’被部署在64位机器上VS建立在同一组件特异性靶向“64”平台?
Answer 1:
没有,是在64位Windows上运行的应用程序AnyCPU并在其上运行的应用程序的x64之间在性能上没有差异。 唯一令标志的变化是在编译的程序集的标题一些标志和CLR使用它只是决定是否要使用x86或x64,闲来无事
如果你问是否有在64位Windows和64位(或AnyCPU)运行的x86应用程序之间的差异,那么答案是肯定的。 两者的区别是:
- 64位显然使用了有两倍大,32位,这意味着更大的内存消耗的引用,但它也意味着你可以使用更多的内存
- 64位可以使用更多的寄存器,只有在CPU的64位模式是可用
- 64位JIT是从32位JIT不同,它具有不同的一组优化的:例如64位JIT有时使用尾调用优化即使不使用特别要求它
tail.
指令(其例如C#不可能发生)
Answer 2:
作为一个侧面说明上述答案。 可以有与使用P / Invoke或DotNetInterop到86 DLL的使用AnyCPU的x64操作系统的问题。 在该DLL的没有64位版本可用的情况下,可能有必要编制86,而不是作为AnyCPU操作系统将尝试加载64位版本...和失败。
文章来源: Performance of a C# application built on AnyCPU vs x64 platform on a 64 bit machine