一尘不染

性能32位与64位算术

linux

本机64 bit整数算术指令是否比其32 bit计数器部件慢(在x86_64装有64 bitOS的计算机上)?

编辑:在当前CPU上,例如Intel Core2 Duo,i5 / i7等。


阅读 236

收藏
2020-06-03

共1个答案

一尘不染

这取决于确切的CPU和操作。例如,在64位Pentium IV上,64位寄存器的乘法要慢得多。Core 2和更高版本的CPU从一开始就设计用于64位操作。

通常,即使是为64位平台编写的代码也使用32位变量,其中的值将适合它们。这主要不是因为算术更快(在现代CPU上通常不是),而是因为它使用更少的内存和内存带宽。

如果整数是32位的,则包含一打整数的结构的大小将比64位的大小小一半。这意味着将需要一半的字节存储空间,一半的高速缓存空间,依此类推。

如果值可能不适合32位,则使用64位本机寄存器和算术。但是主要的性能优势来自x86_64指令集中可用的额外通用寄存器。当然,还有64位指针带来的所有好处。

因此,真正的答案是没关系。即使您使用x86_64模式,您也可以(并且通常会这样做)使用32位算术,它将获得更大的指针和更多的通用寄存器的好处。当您使用64位本机操作时,这是因为您需要64位操作,并且您知道它们比使用多个32位操作伪造它要快-
这是您唯一的选择。因此,在任何实施决策中,32位与64位寄存器的相对性能决不应成为决定因素。

2020-06-03