Эффективность Java - точка против координат - PullRequest
2 голосов
/ 24 октября 2011

Есть большая разница в эффективности при использовании Point2D вместо double x и значения y?

Я работаю над программой, в которой много кругов движется по экрану. Каждый из них начинает с одной точки и приближается к месту назначения (наконец, они останавливаются).

Используя такие методы, как .getCurrentLocation().GetY() (где currentLocation - Point2D), я испытываю низкую производительность с любым большим количеством объектов.

Я не хочу возвращаться и пересматривать весь мой код без причины, поэтому я спрашиваю, смогу ли я увидеть значительное увеличение производительности от простого хранения координат X и Y double вместо использования Points.

Ответы [ 2 ]

7 голосов
/ 24 октября 2011

Прежде всего, вы должны использовать профилировщик, чтобы выяснить, что является причиной низкой производительности.Я использую YourKit , но есть и другие.

Если Point2D действительно является проблемой , вы можете представить свои точки как два double массива, один длявсе x координаты и один для всех y координат.Вероятно, это будет намного быстрее, чем хранение коллекции Point2D объектов.

3 голосов
/ 24 октября 2011

Это зависит от того, постоянно ли вы создаете новые очки.Если нет, то есть вы повторно используете существующие, вы не получите большой разницы в производительности.

В большинстве случаев дорого об объектах стоит не хранилище, а создание объекта.

Однако, как предлагает aix, попробуйте использовать профилировщик, чтобы найти узкие места с реальной производительностью.

...