如何用Java测量基准测试中的磁盘速度

Nom*_*mad 4 java io benchmarking

我想知道如何使用Java API测量磁盘速度.

随机读取,顺序读取和随机和顺序写入.

如果有人认为这不是一个真正的问题.请在关闭之前解释一下.

谢谢

sim*_*eer 8

您可以查看我在java中编写的磁盘实用程序.它可能不是超级幻想,但它的工作原理.

https://sourceforge.net/projects/jdiskmark/

以下是写测量代码的片段:

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)");
Run Code Online (Sandbox Code Playgroud)

代码在gitlab上:https://gitlab.com/jamesmarkchan/jDiskMark/

jDiskMark截图