出于学术原因,我在 AArch64 上使用 sqrt 函数的性能。单浮点sqrtf函数的代码:
fsqrt s0, s0
ret
双浮点sqrt函数的代码:
fsqrt d0, d0
ret
我从这里 指的是FSQRT的理论延迟:http: //infocenter.arm.com/help/topic/com.arm.doc.uan0015b/Cortex_A57_Software_Optimization_Guide_external.pdf
单 sqrt 似乎比双好 2 倍。
但是,在分析时,我得到了这些数字:
326 ms sqrt
82 ms sqrtf
我正在花费相同数量的周期。从这些数字来看, sqrtf 似乎好 4 倍。
我找不到合适的理由?无法在互联网上找到有关此指令实际情况的正确解释。
这方面的一些信息或方向将非常有用。