在性能方面,是一个比java中的自定义类更好还是更差的双精度数组?
作者:互联网
我在Java中编写了一个简单的GJK算法实现(凸形碰撞),它涉及到3D矢量的大量简单计算.在性能与可读性方面,最好将点存储为double [3]并且有一大堆静态方法来处理它们(加,减,点,交叉,否定等)或者使用带有方法的类包含在?
双精度数组的问题在于,如果使用专门的方法,则需要进行简单的减法(例如)多个循环,或者如果它们是硬编码的,则代码变得非常长.Point对象使代码更多更具可读性,但是我认为这不是一个微不足道的性能开销值得吗?
解决方法:
我的建议是:使用您所花费的最少的工作使其工作,然后再进行优化.可能会发现应用程序中的瓶颈完全不同,碰撞检测的改进只是一个小问题.
例如,假设您发现应用程序花费10%的时间进行冲突检测,并且50%的时间用于磁盘读取.如果你可以使用缓存将磁盘读数减少一半,那么你的执行速度提高了25%,这是通过完全消除碰撞检测时间可以达到最佳效果的两倍.
正如唐纳德克努特所说:“过早优化是万恶之源.”
标签:java,arrays,performance,optimization,readability 来源: https://codeday.me/bug/20190826/1733601.html