1

我需要为我的程序做一些性能测试,并且我需要评估存储在文件中的一些数据的最差 IO 访问时间,所以我认为评估这个的最好方法是将这些数据随机存储到不同的 HD 扇区中,以便避免连续数据访问和缓存改进。我认为做到这一点的唯一方法是使用一些低级操作系统命令,例如 UNIX 中的 dd ,您可以在其中指定写入数据的扇区,但如果我没记错的话,这是一种不安全的方法。有人知道这样做的好选择吗?

PS:任何操作系统的任何解决方案都可以工作,唯一的要求是我必须对不同的数据大小进行测试,通过 JAVA 程序访问数据。

4

1 回答 1

1

我认为这样做的唯一方法是使用一些低级操作系统命令

不...RandomAccessFile.seek()

final RandomAccessFile f = new RandomAccessFile(someFile, "rw");

f.seek(someRandomLong);
f.write(...);

现在,您当然要确保写入不会相互冲突。

另一种解决方案是在内存中映射文件并在写入之前将缓冲区的位置设置为某个随机位置。

于 2013-07-08T11:21:33.293 回答