Java浮点三角优化
Java Float Trigonometric Optimization
我正在编写自己的 3D 渲染引擎。根据一般知识,我目前使用浮点值作为我的操作基础。然而,对于旋转矩阵,我需要 java.lang.Math 库中的三角函数,它使用双精度值作为输入和输出。
我想知道您是否可以使用浮点值实现三角函数的优化版本,从而提高性能。
可以。 Math
方法与 sin()
一样,是 native
.
您可以在自己的 class 中编写自己的 native
方法,然后进行基准测试以查看您是否真的有所收获,因为 JIT 可能知道如何优化标准 Math
方法,但无法优化自定义 native
方法。
Math.sin()
、Math.cos()
、Math.tan()
是在汇编中实现的,因此任何自定义实现都将处于严重劣势。
从 float
到 double
的转换,反之亦然,对性能的影响可以忽略不计。因此,如果您想使用 float
来节省内存,请继续。但是,考虑到这是 Java,我不会太担心节省内存。
我正在编写自己的 3D 渲染引擎。根据一般知识,我目前使用浮点值作为我的操作基础。然而,对于旋转矩阵,我需要 java.lang.Math 库中的三角函数,它使用双精度值作为输入和输出。
我想知道您是否可以使用浮点值实现三角函数的优化版本,从而提高性能。
可以。 Math
方法与 sin()
一样,是 native
.
您可以在自己的 class 中编写自己的 native
方法,然后进行基准测试以查看您是否真的有所收获,因为 JIT 可能知道如何优化标准 Math
方法,但无法优化自定义 native
方法。
Math.sin()
、Math.cos()
、Math.tan()
是在汇编中实现的,因此任何自定义实现都将处于严重劣势。
从 float
到 double
的转换,反之亦然,对性能的影响可以忽略不计。因此,如果您想使用 float
来节省内存,请继续。但是,考虑到这是 Java,我不会太担心节省内存。