64 位应用程序相对于 32 位应用程序的性能优势的来源是什么?我假设存在性能优势,因为像 WinRAR 这样的程序会宣传它。
另外,我们是否可以通过切换到 64 位编译器来获得这些性能优势,或者是否需要对代码进行任何更改?
欢迎与非托管和托管代码相关的答案。
x64 架构将 x86 架构中可用的通用寄存器数量增加了一倍,以便编译器能够将更多数据保存在(非常快的)CPU 寄存器中,而不是保存在(相对较慢的)RAM 中。
他们什么时候不再在广告中撒谎了?我错过了什么? ;-)
主要的性能优势是,在 64 位系统中,您可以分配超过 4GB 的 RAM(实际上在大多数系统上是 2GB 以上)而无需交换。这是巨大的速度优势如果您需要的话。
因此,如果您的应用程序需要大量 RAM(图像/视频/音频处理、世界/宇宙模拟),64 位会具有优势。
最重要的是,64 位 CPU 还具有可操作 64 位数据类型的命令(因此您无需模拟 32 位类型的命令)。这也是一个优势,但 a) 没那么大,因为算法需要使用这些类型,而大多数算法不需要 b) 它们仍然比 32 位类型慢(但比仿真快)。
为了给你一个想法,这里有一个来自超级计算机专家的老笑话:“从磁盘加载数据需要一天的时间,然后程序需要五分钟来处理数据,然后我们需要另一天将结果保存到盘”。从 RAM 读取数据比访问磁盘快 1000 到 1000000 倍。
所以总而言之,对于普通用户来说,64位系统几乎没有优势。
为了利用最新 CPU 的 64 位架构,您必须:
这里有一些很棒的答案。
如前所述,您可以访问无限的 RAM,这将有助于提高性能如果您需要的话。
我谦虚地补充一下,如果你不需要它,但无论如何使用它,都会损害性能。
永远不要忽视最古老的科学定律之一:
大自然厌恶真空
我的理解是,在大多数情况下,除了使用更多内存的能力之外,没有任何性能增益。 (例如,如果您经常使用 64 位数据类型,它可能会提供更高的性能)。
大家的回答都很好。有两件事我没有看到提到: