メモリマッピングファイルのパフォーマンス比較テスト
1539 ワード
今日はメモリマッピングファイルの性能と普通のファイルのテストを比べてみましたが、比べ物にならないのでびっくりしました.格差が大きすぎる.
doMemtestという方法は、1000ミリ秒以上の様子で、doGeneralTestというのはほとんど走ったことがありません.
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というのはほとんど走ったことがありません.