.Net平台目标优化

Sup*_*man 13 .net c#

我在VS 2010中注意到C#项目的默认平台目标是x86(它曾经是任何CPU),并且想知道为什么要进行更改.

编译器是否基于将平台修复为x86 vs x64 vs任何CPU来执行任何优化?

出于性能原因,我应该将我的应用程序强制转移到一个平台还是另一个平台?

Jus*_*tin 15

以前版本的Visual Studio用于将其默认为"Any CPU",这意味着在x86机器上总是会使用x86,而在x64机器上,最终会运行x64或x86,具体取决于是否运行x64或x86加载程序集的过程是32位或64位.

麻烦的是,当启动一个新进程时,使用"Any CPU"选项构建的.Net exe将最终成为64位进程而不是32位进程,这可能会导致问题,原因有两个:

  • 为x86编译的任何本机模块(即大多数)都不会再加载到您的进程中(如果您不知道要注意这个问题,那么由于此而导致的错误有时会很神秘).
  • 此外,除非您的应用程序实际使用超过4GB的地址空间(即内存 - 请注意,操作系统不再为64位操作系统中的32位进程保留前1-2GB的地址空间),64位代码通常比由于指针大小增加,32位代码.

由于很少有应用程序实际使用足够的地址空间(即内存)来使麻烦变得有价值,因此将默认值更改为x86以避免这些问题.