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

时间:2009-07-08 20:31:51

标签: .net 64-bit 32-bit

this question/comments中所述,从32位.NET迁移到64位.NET时存在某些缺点。

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

3 个答案:

答案 0 :(得分:6)

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

最大的缺点可能是无法加载32位COM组件。

答案 1 :(得分:5)

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

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

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

Migrating 32-bit Managed Code to 64-bit

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

Are C# Strings (and other .NET API's) limited to 2GB in size?

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

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

  • “编辑并继续”不可用 用于64位调试。

  • 您无法在混合模式调用中进行调试 从本机代码到托管代码,或 反之亦然,在64位代码中。

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

注意:默认情况下不安装64位C ++编译器。您必须在安装过程中选择它们。

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

“在64位Windows上为AMD64移植和优化应用程序......”

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

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

答案 2 :(得分:1)

64位应用程序的运行速度不会超过32位。 下面的两篇博客文章谈到了它:
http://blogs.msdn.com/rmbyers/archive/2009/06/08/anycpu-exes-are-usually-more-trouble-then-they-re-worth.aspx

  

更大的指针意味着更多的内存和   缓存消耗量和数量   可用的CPU缓存字节数是   32位和64位都相同   过程

http://blogs.msdn.com/ricom/archive/2009/06/10/visual-studio-why-is-there-no-64-bit-version.aspx

  

进程的64位地址空间   是不是会帮助你的页面   除了可能是间接的方式,   它肯定会伤到你   因为你的数据是直接的   大。相比之下,64位   操作系统可以帮到你很多!   如果您正在运行32位应用程序   64位操作系统,然后你得到所有的4G   地址空间,所有这些都可以   物理内存支持(如果有的话)   RAM)甚至没有你使用64位   指点自己。