回答
我会在磁盘创建一个大的文件,以确保您始终保留同样的空间,然后用测试,即与RFA文件的读/写块进行,不同的块的大小。我也会改变块的位置(随机地或者返回文件的init和end)。所有这些都可以让你测量某些情况下的平均传输速率,具体取决于块的大小等。
但是要考虑到,不管你使用java还是简单的C,你都无法访问低高级文件组织。你可能正在使用一个碎片化的HD(这个更加不可能是非常分散的)。该信息仅在内核级别(而不是用户级别)可用。但是,如果执行大量测试(不是一次读取文件的一部分,而是遍历所有文件空间),并且该磁盘相当空(以确保磁盘上的块没有大量碎片),你可以统计得到相当合理的读写速度指标。
我忘记了另一个重要的问题,会影响你的测量结果是缓存。第一次从文件中读取块时,您可能不会使用缓存,但不是第二次。为此,我建议您阅读此other question的方法。
是的,一定要注意磁盘读取缓存,写入文件到磁盘也将它添加到磁盘的读取缓存。至少在我的情况下,它的确如此。 – simgineer
您是否想过使用Caliper?
从网站:
显卡是谷歌的写作开源框架,运行和查看JavaMicrobenchmarks的结果。
0.5版本在边缘处有点粗糙,但我们已经发现它非常有用,API将保持大部分稳定。
最简单的完整的显卡基准测试是这样的:
public class MyBenchmark extends SimpleBenchmark {
public void timeMyOperation(int reps) {
for (int i = 0; i < reps; i++) {
MyClass.myOperation();
}
}
}
你可以看看磁盘实用程序我在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/
- 1. Java基准测试磁盘速度
- 2. Openssl速度基准测试
- 3. 使用java测量磁盘写入/读取速度
- 4. 速度基准测试tensorflow安装
- 5. 高速Javascript基准测试
- 6. 效率,基准测试,速度测试,性能
- 7. 使用Python进行基准测试
- 8. 使用Adobe Flex进行速度测试
- 9. 基准测试/测试fastclick.js
- 10. C++中的HDD基准测试 - 测量的传输速度太快
- 11. 在Python中对基准运行时间进行基准测试
- 12. 我想用java对solaris和linux进行基准测试
- 13. 使用矩阵矢量示例对Akka进行基准测试
- 14. 我该如何运行基准测试?
- 15. 测量下载速度Java
- 16. RSpec测试的测量速度
- 17. 如何在Windows中运行Apache基准测试负载测试?
- 18. Azure磁盘速度
- 19. 执行速度测试Android
- 20. 通过.sh脚本对java jar进行基准测试
- 21. 如何基于基于websocket的Node.js应用程序进行基准测试?
- 22. 如何测量linux中的基准测试
- 23. Siege基准测试
- 24. 基准测试NetBeans
- 25. Netlogo基准测试
- 26. 如何设置MongoDB Sharded Cluster来对Cassandra进行基准测试?
- 27. 如何进行Apache Mina性能基准测试
- 28. 如何在Clojure中对函数进行基准测试?
- 29. 如何在SUPERCOP中对单个算法进行基准测试?
- 30. 如何在多核处理器上进行基准测试
读取和写入,同时一堆东西时机呢? –