如this question/comments中所述,从32位.NET迁移到64位.NET时存在某些缺点。
可能最大的优势是64位世界中更大的进程地址空间,但其他优点和缺点值得注意?
答案 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位 指点自己。