Мне нужно передать x / y. Я просто использовал java.awt.Point. Я делаю это часто, учитывая характер приложения, но намного медленнее, чем обычные массивы. Я также попытался создать свой собственный FastPoint, который представляет собой просто int x / y и очень простой конструктор классов, который тоже очень медленный.
Время в миллисекундах.
java.awt.Point: 10374
Я также попытался создать свой собственный FastPoint, который представляет собой просто int x / y и очень простой конструктор классов, который тоже очень медленный.
Время в миллисекундах.
java.awt.Point: 10374
Я также попытался создать свой собственный FastPoint, который представляет собой просто int x / y и очень простой конструктор классов, который тоже очень медленный.
Время в миллисекундах.
java.awt.Point: 10374
FastPoint: 10032
Массивы: 1210
public class FastPoint {
public int x;
public int y;
public FastPoint(int x, int y) {
this.x = x;
this.y = y;
}
}
Jvisualvm говорит, что Point (либо awt, либо мой собственный) использует тонны памяти по сравнению с простым массивом int [].
Я предполагаю, что это просто накладные расходы из-за необходимости создавать объект вместо базового типа ? Есть ли способ настроить или оптимизировать этот класс Point? Я уже переключился на базовые массивы int (которые сейчас на тонну быстрее), но просто пытаюсь понять, почему это происходит медленно, и могу ли я что-нибудь с этим сделать?
Код теста:
for (int i = 0; i < maxRuns; i++) {
point = new Point(i,i);
}
for (int i = 0; i < maxRuns; i++) {
a[0] = i; a[1] = i;
}