在性能方面,是一个比java中的自定义类更好还是更差的双精度数组?

Tom*_*Tom 3 java arrays optimization performance readability

我在Java中编写了一个简单的GJK算法实现(凸形碰撞),它涉及到3D矢量的大量简单计算.在性能与可读性方面,最好将点存储为double [3]并且有一大堆静态方法来处理它们(加,减,点,交叉,否定等)或者使用带有方法的类包含在?

双精度数组的问题在于,如果使用专门的方法,则需要进行简单的减法(例如)多个循环,或者如果它们是硬编码的,则代码变得非常长.Point对象使代码更多更具可读性,但是我认为这不是一个微不足道的性能开销值得吗?

jim*_*mbo 6

我的建议是:使用您所花费的最少的工作使其工作,然后再进行优化.可能会发现应用程序中的瓶颈完全不同,碰撞检测的改进只是一个小问题.

例如,假设您发现应用程序花费10%的时间进行冲突检测,并且50%的时间用于磁盘读取.如果您可以使用缓存来减少一半的磁盘读取,你25%,这是两倍以上你可以通过优化完全消除碰撞检测时间达到改善执行.

正如唐纳德克努特所说:"过早优化是万恶之源."