Java浮点三角优化

Java Float Trigonometric Optimization

我正在编写自己的 3D 渲染引擎。根据一般知识,我目前使用浮点值作为我的操作基础。然而,对于旋转矩阵,我需要 java.lang.Math 库中的三角函数,它使用双精度值作为输入和输出。

我想知道您是否可以使用浮点值实现三角函数的优化版本,从而提高性能。

可以。 Math 方法与 sin() 一样,是 native.

您可以在自己的 class 中编写自己的 native 方法,然后进行基准测试以查看您是否真的有所收获,因为 JIT 可能知道如何优化标准 Math 方法,但无法优化自定义 native 方法。

Math.sin()Math.cos()Math.tan() 是在汇编中实现的,因此任何自定义实现都将处于严重劣势。

floatdouble 的转换,反之亦然,对性能的影响可以忽略不计。因此,如果您想使用 float 来节省内存,请继续。但是,考虑到这是 Java,我不会太担心节省内存。