64位.NET有哪些优点/缺点?

Bri*_*sen 12 .net 64-bit 32-bit

正如本问题/评论中提到的,从32位.NET迁移到64位.NET时存在某些缺点.

可能最大的优势是64位世界中更大的进程地址空间,但其他优点和缺点值得注意?

Meh*_*ari 6

对于一些计算量很大(数字运算)应用程序,我已经看到它明显更快(在我的经验中约为4倍).最好的是它在纯托管案例中免费提供.你甚至不需要重新编译任何东西来获得好处.另外,我听说x64 JIT有更积极的优化.

最大的缺点可能是无法在进程中加载​​32位COM组件.


Ade*_*ler 5

您的应用程序运行速度可能会更快 我看到一些应用程序的改进,但没有其他应用程序.这取决于您的应用程序利用64位(数学)运算的多少,如果这会抵消x64使用的较大数据和代码,因此必须先加载到指令和数据缓存中才能执行.

http://blogs.msdn.com/b/joshwil/archive/2006/07/18/670090.aspx

这值得一读.这是旧的(.NET 2.0),但仍然适用; 指针大小,COM互操作等:

将32位受管代码迁移到64位

值得一提的是,即使在x64上,CLR的单个对象大小限制为2Gb.对于99%的场景而言,这不是问题,但如果您转向x64,可能是因为您可能正在使用大型数据集.有关更多讨论,请参见此处

C#Strings(和其他.NET API)的大小限制为2GB吗?

所以.除非您的应用程序使用的数据不适合32位内存或大量使用64位操作,否则您可能看不到太多,如果有任何改进.

另一个缺点是Visual Studio for x64应用程序有一些限制:

  • "编辑并继续"不适用于64位调试.

  • 在64位代码中,无法以混合模式调用,从本机代码调用托管代码,反之亦然.

请参阅:http://msdn.microsoft.com/en-us/library/ms184681(VS.80).aspx

注意:默认情况下不安装64位C++编译器.您必须在安装期间选择它们.

我也刚刚发现了这个(因为我自己正在优化x64应用程序).

"在AMD64的64位Windows上移植和优化应用程序......"

http://download.microsoft.com/download/5/b/5/5b5bec17-ea71-4653-9539-204a672f11cf/AMD64_PortApp.doc

在编译器开关等方面有很多好的指针.

  • "默认情况下不安装64位编译器":OP正在谈论.NET应用程序.这仅适用于本机C++编译器,而不适用于VB.NET/C#. (2认同)