我正在编写 3D 碰撞,想知道基本数学函数(如 + - * / sqrt pwr 三角函数,如 sin cos tan arcsin)的性能差异。
我听说这取决于许多其他因素,所以我只是想粗略地了解哪一个速度较慢并且需要避免,同时寻找不同的方法来解决问题。我也想知道差异的顺序和大小
Thanks
编辑:我用 VC++ 为 x86 编写。但了解其他架构和总体情况也很好。我主要以单浮点计算来进行实时应用。
问题是有些算法需要 sqrt 或三角函数,但我可以通过其他方法绕过它们。每个都有自己的优势,我想知道是否足以进行权衡。我想要一般知识来解决我自己的问题,谷歌了一下但没有找到任何结果,所以请回答
广义地说,概括一下最近的常见硬件:
- 加法、减法和乘法速度很快(每个核心每个周期至少能够执行一次操作)。
- 除法和平方根通常要慢一个数量级(每次运算数十个周期)。对于特定用途,有许多近似算法可用于在一定程度上缩小这种差距。
- 调用数学库函数(
sin
, cos
, exp
, log
等)根据您使用的数学库实现以及硬件而有很大差异。在(例如)当前的 i7 上,典型情况是介于每约 20 个周期一次操作和每约 200 个周期一次操作之间,具体取决于实现的质量和所调用的特定函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)