【问题标题】:Write files into randomly non-contiguous hard disk positions将文件写入随机不连续的硬盘位置
【发布时间】:2013-07-05 16:57:08
【问题描述】:

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

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

【问题讨论】:

    标签: java operating-system hardware hard-drive


    【解决方案1】:

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

    没有...RandomAccessFile has .seek():

    final RandomAccessFile f = new RandomAccessFile(someFile, "rw");
    
    f.seek(someRandomLong);
    f.write(...);
    

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

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

    【讨论】:

    • 谢谢,我没有看“偏移量可能设置在文件末尾之外。设置偏移量超出文件末尾不会改变文件长度。”部分:P 我现在就试试!
    • 好吧,只要你从那个偏移量开始和写入,文件长度就会改变;)在 Java 中创建稀疏文件可能的;)
    猜你喜欢
    • 2014-12-21
    • 2012-11-28
    • 2012-06-17
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 2011-10-21
    • 2013-12-29
    • 2023-03-13
    相关资源
    最近更新 更多