Почему очки медленные

Мне нужно передать 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; 
}
5
задан Kirk Woll 10 September 2010 в 22:44
поделиться