好的。我对微基准测试的计算有误。如果您没有多余的时间,请不要阅读。
代替
double[] my_array=new array[1000000];double blabla=0;
for(int i=0;i<1000000;i++)
{
my_array[i]=Math.sqrt(i);//init
}
for(int i=0;i<1000000;i++)
{
blabla+=my_array[i];//array access time is 3.7ms per 1M operation
}
我用了
public final static class my_class
{
public static double element=0;
my_class(double elementz)
{
element=elementz;
}
}
my_class[] class_z=new my_class[1000000];
for(int i=0;i<1000000;i++)
{
class_z[i]=new my_class(Math.sqrt(i)); //instantiating array elements for later use(random-access)
}
double blabla=0;
for(int i=0;i<1000000;i++)
{
blabla+=class_z[i].element; // array access time 2.7 ms per 1M operations.
}
}
每 1M 循环迭代的循环开销接近 0.5 毫秒(使用此偏移量)。
类数组的元素访问时间比原始数组的低 %25。问题:你知道有什么其他方法可以降低随机访问时间吗?intel 2Ghz 单核 java -eclipse