簡體   English   中英

在x86中表現不同的數學函數?

[英]Performance of different math functions in x86?

我正在寫一個3D碰撞,並想知道基本數學函數的性能差異,如+ - * / sqrt pwr三角函數,如sin cos tan arcsin ..

我聽說這取決於許多其他事情,所以我只是想大致了解哪一個更慢,需要避免,同時找到解決問題的不同方法。 另外,我想知道差異的順序和大小

謝謝

編輯:我在VC ++中為x86編寫。 但是,其他架構和總體情況的知識也很好。 主要是我在單個浮點計算實時應用。

問題是一些算法需要sqrt或三角函數,但我可以通過其他方法繞過它們。 每個人都有自己的進步,我想知道足以做出權衡。 我想要一般知識來解決我自己的問題,做了一個谷歌,但沒有找到任何所以請讓它回答

講得非常廣泛,並概括了最近的常見硬件:

  • 加法,減法和乘法很快(每個核心每個周期能夠至少進行一次操作)。
  • 除法和平方根通常約慢一個數量級(每個操作數十個周期)。 有許多近似算法可用於縮小這種差距以適應特定用途。
  • 調用數學庫函數( sincosexplog等)會有很大的不同,具體取決於您使用的數學庫實現以及硬件。 在(比方說)電流i7上,每隔約20個周期的操作和每~200個周期的操作之間的某種情況是典型的,這取決於實現的質量和被調用的特定功能。

粗略的想法: +, - < * < / < sqrt < sin, cos, etc

PS。 在最近的英特爾架構上:

ADDSD / SUBSD - 3個周期延遲,1個周期吞吐量

MULSD - 6-7周期延遲,2個周期吞吐量

DIVSD - 38-39周期延遲,38-39周期吞吐量

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM