メモリマッピングファイルのパフォーマンス比較テスト


今日はメモリマッピングファイルの性能と普通のファイルのテストを比べてみましたが、比べ物にならないのでびっくりしました.格差が大きすぎる.
 
 
public class FileTest {

	static int length = 0x8000000; // 128 Mb

	public void doMemTest() {
		try {
			long start = System.currentTimeMillis();
			FileChannel fc = new RandomAccessFile("e:/test/test.dat", "rw").getChannel();
			MappedByteBuffer out = fc.map(FileChannel.MapMode.READ_WRITE, 0, length);
			for (int i = 0; i < length; i++) {  
	            out.put((byte) 'x');  
	        } 
			long end = System.currentTimeMillis();
			fc.close();
			System.out.println(end - start);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void doGeneralTest() {
		try {
			long start = System.currentTimeMillis();
			RandomAccessFile fc = new RandomAccessFile("e:/test/test.dat", "rw");
			for (int i = 0; i < length; i++) {  
	            fc.write((byte) 'x');
	        } 
			long end = System.currentTimeMillis();
			
			System.out.println(end - start);
			fc.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) throws Exception {
		FileTest t = new FileTest();
//		t.doMemTest();
		t.doGeneralTest();
	}
}

 
 
doMemtestという方法は、1000ミリ秒以上の様子で、doGeneralTestというのはほとんど走ったことがありません.