ディスクシーク時間のテスト
1540 ワード
性能を分析する時、ファイルシステムの読み取り速度は不定で、主に時間が読み取りにかかるだけではなくて、またディスクの回転と道を探す上で使って、1段のコードテストのこれの時間を書いて、普通のハードディスクは10 msぐらいです.
2つの関数があり、1つ目の関数は50 Gデータを生成し、2つ目の関数はテストです.
2つの関数があり、1つ目の関数は50 Gデータを生成し、2つ目の関数はテストです.
package WebGis.Tile;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Random;
public class testSeek {
public static String path="F:\\test.txt";
public static long num=50000000L;
public static int testnum=50000;
/**
* ,50G
* @throws IOException
*/
public static void write() throws IOException{
File file=new File(path);
if(!file.exists())
file.createNewFile();
RandomAccessFile raf=new RandomAccessFile(file,"rw");
byte[] x=new byte[1024];
for(long i=0;i<num;i++)
raf.write(x);
raf.close();
}
/**
* 500 ,
* @throws IOException
*/
public static void seek() throws IOException{
System.out.println("bn");
File file=new File(path);
RandomAccessFile raf=new RandomAccessFile(file,"rw");
long begin=System.currentTimeMillis();
for(int i=0;i<testnum;i++){
Random r=new Random();
long l=r.nextLong();
l=l%(num*1024);
if(l<0)
l=0-l;
raf.seek(l);
byte[] w=new byte[1];
raf.read(w);// ,
}
long end=System.currentTimeMillis();
System.out.println((end-begin)/testnum);
}
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
seek();
}
}