我想计算两个向量之间的角度,但我发现这些反三角函数如acos和atan使用了大量的CPU周期。有没有一种方法可以在不使用这些函数的情况下完成这个计算?此外,在优化时是否真的会受到这些函数的影响?
我想计算两个向量之间的角度,但我发现这些反三角函数如acos和atan使用了大量的CPU周期。有没有一种方法可以在不使用这些函数的情况下完成这个计算?此外,在优化时是否真的会受到这些函数的影响?
STL库中没有这样的功能;这些功能在数学库中。
此外,你确定在这里高效很重要吗?你是否分析过这些函数调用在热点中出现的频率?你是否知道使用这些函数的性能不佳?在进行微小优化之前,应该先回答这些问题。
为了提供建议,你打算怎么做?它需要有多准确?
如果需要高精度的实际角度,则可能无法做得更好。如果只需要进行一些比较,可以使用绝对值和点积来获取角度的余弦。如果不需要精度,可以这样做并使用acos查找表。如果将其用作另一个计算的输入,则可以使用一些几何或三角恒等式来避免找到反余弦或反正切。
无论如何,一旦完成所需的优化,应该进行前后时间运行以查看是否已经取得了显著的差异。