程式設計師長期以來一直相信整數計算是本質上比浮點計算更快。然而,這種假設對於現代多核心處理器可能不再成立。
為了評估各種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中文網其他相關文章!