程序员长期以来一直相信整数计算是本质上比浮点计算更快。然而,这种假设对于现代多核处理器可能不再成立。
为了评估各种 CPU 架构上整数和浮点计算的相对速度,让我们深入研究一下一些数据:
64 位 Intel Xeon X5550 @ 2.67GHz,gcc 4.1.2 -O3:
short add/sub: 1.005460 [0] short mul/div: 3.926543 [0] long add/sub: 0.000000 [0] long mul/div: 7.378581 [0] long long add/sub: 0.000000 [0] long long mul/div: 7.378593 [0] float add/sub: 0.993583 [0] float mul/div: 1.821565 [0] double add/sub: 0.993884 [0] double mul/div: 1.988664 [0]
32 位双核 AMD Opteron(tm) 处理器 265 @ 1.81GHz,gcc 3.4.6 -O3:
short add/sub: 0.553863 [0] short mul/div: 12.509163 [0] long add/sub: 0.556912 [0] long mul/div: 12.748019 [0] long long add/sub: 5.298999 [0] long long mul/div: 20.461186 [0] float add/sub: 2.688253 [0] float mul/div: 4.683886 [0] double add/sub: 2.700834 [0] double mul/div: 4.646755 [0]
这些结果表明,在这些架构上,之间的性能差距整数和浮点运算比较少。在某些情况下,浮点计算甚至可以比整数运算更快,特别是对于“long long”等较长的数据类型。
有几个因素影响浮点的性能和整数计算:
准确测试特定目标硬件上浮点和整数计算的性能,使用以下步骤:
虽然整数计算曾经明显快于浮点计算,但在现代硬件上,这种差距已经显着缩小。超标量架构、专用 FPU 和高效的浮点库使得浮点运算的速度可与整数运算相媲美。因此,在假设整数计算本质上更快之前,有必要评估特定的硬件和工作负载。
以上是在现代硬件上,整数计算仍然比浮点计算快吗?的详细内容。更多信息请关注PHP中文网其他相关文章!