测试磁盘寻道时间

分析性能时,文件系统读取速度不定,主要因为时间不仅花在读取上,还花在磁盘旋转和寻道上,写了一段代码测试这个的时间,一般普通硬盘是10ms左右。

有两个函数,第一个函数是生成50G数据,第二个函数是测试

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();
	}

}


你可能感兴趣的:(测试磁盘寻道时间)