64位性能优势

时间:2010-07-27 12:56:15

标签: performance 64-bit

64位应用程序具有超过32位应用程序的性能优势的来源是什么?我假设有一个性能优势,因为像WinRAR这样的程序做广告。

另外,我们可以通过切换到64位编译器来获得这些性能优势,还是需要对代码进行任何更改?

欢迎与非托管代码和托管代码相关的答案。

5 个答案:

答案 0 :(得分:17)

x64架构使x86架构中可用的通用寄存器数量翻倍,因此编译器能够将更多数据保存在(非常快)CPU寄存器中,而不是(相对较慢)RAM中。

答案 1 :(得分:4)

他们什么时候停止投放广告?我错过了什么? ; - )

主要的性能优势是在64位系统中,您可以分配超过4GB的RAM(实际上在大多数2GB的系统上),而无需交换。如果你需要它,这是一个巨大的速度优势

因此,如果您的应用程序需要大量RAM(图像/视频/音频处理,世界/宇宙模拟),那么64位将具有优势。

除此之外,64位CPU还具有可在64位数据类型上运行的命令(因此您无需模拟具有32位类型的命令)。这也是一个优势,但它是a)不是那么大,因为你的算法需要使用这些类型而且大多数都没有b)它们仍然比32位类型慢(但比模拟速度快)。

为了给你一个想法,这是一个来自超级计算机家伙的老笑话:“从磁盘加载数据需要一天时间,然后程序需要五分钟来处理数据,然后我们需要另一天来保存结果到磁盘“。从RAM读取数据的速度比访问磁盘快1000到1000000倍。

总而言之,对于普通用户来说,64位系统几乎没有优势。

答案 2 :(得分:4)

为了利用最新CPU的64位架构,您必须:

  • 使用64位CPU和操作系统
  • 使用64位api专门开发64位 - 实现必须一直到最基本的代码使用CPU寄存器(通常用汇编语言编写)以利用额外的寄存器。
  • 开发一个真正受益于额外寄存器的应用程序--WinRAR是一个可以充分利用额外寄存器的应用程序,因为它涉及大量使用复杂算法的微积分。如果您使用非常简单的算法编写应用程序,则不需要额外的寄存器地址空间,并且在64位上无法更快地工作
  • 还考虑到当你使用CPU寄存器时,即使你没有使用整个地址空间作为一个值,它仍将占用尽可能多的空间(= 64位)..因此写一个小应用程序64位目标是获得优化的代码将无法正常工作..该应用程序将占用RAM的两倍,而不是在32位下开发,它甚至可能更慢。 64位编程对于使用繁重算法或需要分配大量内存的应用程序有意义(4Gb是32位应用程序的限制)。

答案 3 :(得分:1)

我的理解是,在大多数情况下,除了使用更多内存的能力之外,没有这样的性能提升。 (例如,如果您正在使用64位数据类型,它可能会提供更高的性能。)

答案 4 :(得分:1)

这里有一些很好的答案。

如前所述,您可以访问无限制的RAM,如果您需要,可以帮助提高性能

如果您不需要,我会谦虚地添加,但无论如何都要使用它,这会损害性能。

永远不要忘记最古老的科学法则之一:

  

自然憎恶真空