我需要繞過x/y。我只是使用java.awt.Point。考慮到應用程序的性質,我做了很多工作,但比正常的數組慢了很多。我也嘗試創建我自己的「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說點(或者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;
}
我不相信使用數組而不是對象會導致900%的時間增加。時間以毫秒爲單位 - >但要做什麼? – 2010-09-10 22:26:34
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; }
– dime 2010-09-10 22:35:24也是,在你的陣列版本,你不是** **實例化的陣列。創建對象/數組和在同一數組中分配值*到*元素的成本差異很大* *。 – 2010-09-10 22:38:18