哪种整数数据类型最有效地使用x64 CPU核心?

时间:2011-01-10 22:32:37

标签: c++ 64-bit 32bit-64bit x86-64

在x64机器上添加两个32位整数和两个64位整数需要相同的指令时间,不是吗?如果是这样,当我在x64 CPU内核中使用32位整数时,其他32位没有任何好处,是吗?我想在适合64位内核的最大可能数值范围内进行计算。 哪种数据类型最符合此标准?

我的候选人是:

  • INT
  • long int
  • 的int64_t
  • ...(如果你有另一个,请添加)

3 个答案:

答案 0 :(得分:4)

如果没有某种测量,你真的无法判断32位或64位计算是否会完全相同。理论上,您可以使用64位而不是32位通过ALU驱动两倍的位,您的应用程序的内存要求将会增加。算术运算通常在CPU上占用一个周期。访问CPU缓存之外的内存可能需要一百个周期,在使用64位数量时可能会导致大幅减速。

答案 1 :(得分:3)

m128i

N只有在不使用SIMD单元的情况下,32位添加只需N 64位添加。

答案 2 :(得分:2)

INT

根据定义,它是在编译的处理器上最有效的类型。这就是为什么int会改变每个处理器的大小。
< quote>“plain int具有执行环境体系结构建议的自然大小< / quote>

注意:任何代码都高度依赖于正在运行的操作系统。如果使用特定大小的int编译OS,那么为了保持兼容性,为OS构建的任何代码必须保持不变。因此,如果OS制造商保持32位int兼容性,则int的大小将保留为默认值32(即使64是相同的速度)。

希望随着时间的推移,操作系统制造商将更新那里提供真正的64位。