我想基準測試將一個二進制文件從一個位置保存到另一個位置需要多快或多慢。輸出高波動的微基準標記
FileInputStream fis = new FileInputStream("/path/to/binary/file");
BufferedInputStream in = new BufferedInputStream(fis);
FileOutputStream fos = new FileOutputStream("/path/to/save/new/binary/file");
BufferedOutputStream out = new BufferedOutputStream(fos);
long before = System.currentTimeMillis();
int data = 0;
while ((data = in.read()) != -1) {
out.write(data);
}
in.close();
out.close();
int seconds = (int) (System.currentTimeMillis() - before/1000) % 60;
System.out.println("Took " + seconds);
緩衝或無緩衝,輸出範圍從3到64毫秒。我預計會有更接近的範圍,比如40-50或10-20或30-40。這種高波動的原因是什麼?
使用nanoTime給了我與currentTimeMillis相同的結果。所以我將不得不運行多個測試並從那裏獲取平均值。 – 2012-02-16 19:03:25