我需要绕过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