如何在 Java 中测量磁盘速度以进行基准测试 [英] How to measure Disk Speed in Java for Benchmarking
本文介绍了如何在 Java 中测量磁盘速度以进行基准测试的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想知道如何使用 Java API 测量磁盘速度.
随机读取、顺序读取和随机顺序写入.
如果有人认为这不是一个真正的问题.请在关闭之前解释一下.
谢谢
解决方案
你可以看看我用java写的一个磁盘工具.它可能不是特别花哨,但确实有效.
I would like to know how can you measure disk speed using Java API.
Random read,sequential read and Random and sequential write.
If someone thinks it's not a real question. Please explain so before closing it.
Thanks
解决方案
You can take a look at a disk utility I wrote in java. It may not be super fancy but it works.
https://sourceforge.net/projects/jdiskmark/
Here is a snippet of the write measurement code:
try (RandomAccessFile rAccFile = new RandomAccessFile(testFile,mode)) {
for (int b=0; b<numOfBlocks; b++) {
if (App.randomEnable) {
int rLoc = Util.randInt(0, numOfBlocks-1);
rAccFile.seek(rLoc*blockSize);
} else {
rAccFile.seek(b*blockSize);
}
rAccFile.write(blockArr, 0, blockSize);
totalBytesWrittenInMark += blockSize;
wUnitsComplete++;
unitsComplete = rUnitsComplete + wUnitsComplete;
percentComplete = (float)unitsComplete/(float)unitsTotal * 100f;
}
}
long endTime = System.nanoTime();
long elapsedTimeNs = endTime - startTime;
double sec = (double)elapsedTimeNs / (double)1000000000;
double mbWritten = (double)totalBytesWrittenInMark / (double)MEGABYTE;
long bwMbSec = mbWritten / sec;
System.out.println("Write IO is " + bwMbSec + " MB/s"
+ "(MB written " + mbWritten + " in " + sec + " sec)");
The code is on gitlab: https://gitlab.com/jamesmarkchan/jDiskMark/
这篇关于如何在 Java 中测量磁盘速度以进行基准测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文