使用Point2D
代替double
x和y值时效率是否存在很大差异?
我正在制作一个有很多圈子在屏幕上移动的程序。它们各自从一个点开始,越来越靠近目的地(最后,它们停止)。
使用像.getCurrentLocation().GetY()
这样的方法(其中currentLocation
是Point2D
),我的任何大量实体都会遇到性能下降的问题。
我不想无缘无故地回去修改我的所有代码,所以我问我是否会因为仅存储X和double
坐标而显着提升性能使用Points
。
答案 0 :(得分:7)
首先,您应该使用分析器来找出导致性能不佳的原因。我使用YourKit,但还有其他人。
如果Point2D
确实是问题,您可以将您的积分表示为两个double
数组,一个用于所有x
坐标,一个用于所有y
数组Point2D
1}}坐标。这可能比保留{{1}}个对象的集合要快得多。
答案 1 :(得分:3)
这取决于你是否经常创造新的积分。如果没有,即你重复使用现有的,你不应该有很大的性能差异。
在大多数情况下,对象的成本高昂不是存储而是对象创建。
但是,正如aix所建议的那样,尝试使用分析器来查找真正的性能瓶颈。