为什么java.util.Random减慢后面的代码行?

时间:2017-05-14 23:17:28

标签: java random time

我正在尝试测试各种磁盘访问模式的运行时,并注意到无论何时使用随机生成的数据集,执行所需的时间大约是平常的2.5倍,对于缓存和非缓存访问方法。对于所有其他访问模式,非高速缓存,直接到磁盘的访问具有相同的执行时间。随机访问是唯一相差很大的。

使用//testing stuff here而不是accessPattern[i] = rand.nextInt(1000);时,我的代码的accessPattern[i] = i * 2;部分是否运行速度较慢?我将accessPattern []的元素一次一个地传递给测试部分中的另一个函数,但是我不明白为什么使用Random初始化数组会影响它。

private void testRandomAccesses( ){
    SysLib.cout( "Random Access Test\n" );
    Random rand = new Random();
    int accessPattern[] = new int[400];
    for ( int i = 0; i < 400; ++i )
        accessPattern[i] = rand.nextInt(1000); //slow execTime
      //accessPattern[i] = i * 2; //fast execTime


    startTime = new Date().getTime();
    //testing stuff here
    for ( int i = 0; i < 400; ++i )
        SysLib.rawwrite( accessPattern[i], testBlock ); 
    endTime = new Date().getTime();
    execTime = endTime - startTime;
}

0 个答案:

没有答案