我正在编写我自己的3D渲染引擎。根据常识,我目前正在使用浮点值作为我的操作基础。然而,对于旋转矩阵,我需要java.lang.Math库中的三角函数,该库使用双精度值作为in和output。
我想知道您是否可以使用浮点值实现三角函数的优化版本,以提高性能。
发布于 2020-11-15 03:17:35
Math.sin()、Math.cos()、Math.tan()都是在汇编中实现的,因此任何自定义实现都将处于严重的劣势。
从float到double之间的转换对性能的影响可以忽略不计。所以,如果你想使用float来节省内存,那就去吧。然而,考虑到这是Java,我不会太担心节省内存。
发布于 2020-10-31 07:03:23
你可以的。与sin()一样,Math方法也是native。
您可以在自己的类中编写自己的native方法,然后进行基准测试,看看是否真正获得了什么,因为JIT可能知道如何优化标准的Math方法,但无法优化自定义的native方法。
https://stackoverflow.com/questions/64616754
复制相似问题