如何在 Java 中测量磁盘速度以进行基准测试 [英] How to measure Disk Speed in Java for Benchmarking

查看:25
本文介绍了如何在 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆