64 位性能优势

问题描述 投票:0回答:6

64 位应用程序相对于 32 位应用程序的性能优势的来源是什么?我假设存在性能优势,因为像 WinRAR 这样的程序会宣传它。

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

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

performance 64-bit
6个回答
17
投票

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


5
投票

他们什么时候不再在广告中撒谎了?我错过了什么? ;-)

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

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

最重要的是,64 位 CPU 还具有可操作 64 位数据类型的命令(因此您无需模拟 32 位类型的命令)。这也是一个优势,但 a) 没那么大,因为算法需要使用这些类型,而大多数算法不需要 b) 它们仍然比 32 位类型慢(但比仿真快)。

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

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


4
投票

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

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

2
投票

这里有一些很棒的答案。

如前所述,您可以访问无限的 RAM,这将有助于提高性能如果您需要的话

我谦虚地补充一下,如果你不需要它,但无论如何使用它,都会损害性能。

永远不要忽视最古老的科学定律之一:

大自然厌恶真空


1
投票

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


0
投票

大家的回答都很好。有两件事我没有看到提到:

  1. 驱动程序可以分配几乎与物理内存一样多的内存。 64 位驱动程序中的内存比 32 位驱动程序中的内存大得多。
  2. 您可以在 64 位驱动程序中使用浮点运算(几乎没有限制)。
© www.soinside.com 2019 - 2024. All rights reserved.