将程序集编译为x64有什么好处吗?

时间:2009-06-07 13:34:23

标签: .net x86 64-bit compilation

假设我有一个需要在x86和x64平台上运行的.Net Framework 3.5 SP1 / CLR 2.0应用程序。假设无论出于何种原因,我还需要创建单独的x86和x64安装程序。

因为我还有一个特定于x64的安装程序,将应用程序本身重新编译为x64而不是以“AnyCPU”为目标会有什么好处吗?

除了生成的程序集的标题信息之外,将目标设置为x64是否会发生任何变化?

4 个答案:

答案 0 :(得分:4)

如果指定x64,它会更改程序的某些默认内存设置,使其在内存压力较大的程序中性能稍微提高一些。使用x64(link

进行编译时会分配更大的线程堆栈

答案 1 :(得分:2)

只要您不是Ngen任何程序集,最好留下“AnyCPU”,让JIT以架构为目标。

答案 2 :(得分:1)

我发现当我包装本机x86 dll时,需要为x86平台编译包装器程序集,否则我会在x64机器上抛出BadImageFormatException。然后就是那种雪球,因为所有引用该程序集的程序集也需要为x86平台编译。

可能我只是做错了什么,但这就是我发现的。如果我没有使用本机dll,那么我会把所有的程序集都留作“AnyCPU”。

答案 3 :(得分:0)

我对.net程序集知之甚少,但总的来说,如果你知道一个程序只能在x64架构中执行,用x64机器码编译它你会得到一些性能提升,你会丢失没有(只要你已经知道它只会在x64环境中执行)。