我需要为我的程序做一些性能测试,我需要评估存储在文件中的一些数据的最差IO访问时间,所以我认为评估这个的最佳方法是将这些数据随机存储到不同的HD扇区为了避免连续的数据访问和缓存改进。我认为这样做的唯一方法是使用一些低级OS命令,比如UNIX中的dd,你可以在其中指定写入数据的扇区,但如果我没有弄错,这是一种不安全的方法。有人知道这样做的好方法吗?
PS:任何操作系统的解决方案都可以使用,唯一的要求是我必须在不同的数据大小上进行测试,通过JAVA程序访问数据。
答案 0 :(得分:1)
我认为唯一的方法是使用一些低级操作系统命令
否...... RandomAccessFile
has .seek()
:
final RandomAccessFile f = new RandomAccessFile(someFile, "rw");
f.seek(someRandomLong);
f.write(...);
现在,您当然要确保写入不会相互冲突。
另一个解决方案是将文件映射到内存中,并在写入之前将缓冲区的位置设置为某个随机位置。