问题描述
我正在编写自己的3D渲染引擎。根据一般知识,我目前正在将浮点值用作我的操作基础。但是,对于旋转矩阵,我需要java.lang.Math库中的三角函数,该函数使用in和output中的双精度值。
我想知道您是否可以使用浮点值来实现三角函数的优化版本,从而提高性能。
解决方法
可以。 Math
和sin()
一样,都是native
。
您可以在自己的类中编写自己的native
方法,然后进行基准测试以查看是否实际获得了任何东西,因为JIT可能知道如何优化标准的Math
方法,但无法进行优化自定义native
方法。
Math.sin()
,Math.cos()
,Math.tan()
是在汇编中实现的,因此任何自定义实现都将处于严重的劣势。
从float
到double
的转换以及相反的转换对性能的影响都可以忽略不计。因此,如果要使用float
来节省内存,请继续。但是,考虑到这是Java,我不必担心节省内存。