Ok。私はマイクロベンチマークの計算を誤解しています。あなたが余分な時間を持っていない場合、Plzは読まないでください。
それ以外の
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低くなっています。質問:ランダムアクセス時間をさらに短縮する他の方法を知っていますか?intel2Ghzシングルコアjava-eclipse