java - 如何在 Java 中测量磁盘速度以进行基准测试

标签 java io benchmarking

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

随机读、顺序读和随机顺序写。

如果有人认为这不是一个真正的问题。请在关闭前说明。

谢谢

最佳答案

你可以看看我用 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)");

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

jDiskMark screenshot

关于java - 如何在 Java 中测量磁盘速度以进行基准测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14731701/

相关文章:

machine-learning - 在哪里可以找到一组带有真实标签的良好基准聚类数据集?

java - 使用 JSTL 标签(点字符)转义 JSP EL

java - eclipse中Tomcat上使用JDBC for MYSQL时出现classNotFound异常

c - 使用 fgets 和 strtok 从文件中读取和解析行

postgresql - 如何对一组 PostgreSQL 查询进行基准测试?

linux - 基准模拟 "realistic"桌面/服务器工作负载

Java读取不同数据库表

java - 从路径中搜索并获取要执行的 jar

Ruby 双向字符串缓冲区

io - 如何使用 see 读取文件并将内容放入 Prolog 中的列表中?