【问题标题】:Why is it better to split files into small pieces when writing? [duplicate]为什么写的时候把文件分成小块更好? [复制]
【发布时间】:2017-08-11 13:22:20
【问题描述】:

我在看《O'Reilly Java IO》这本书,有一个推荐:

文件通常最好以块大小的小倍数写入 磁盘,通常为 512、1024 或 2048 字节。

我试图找到任何解释,但我找不到。我只有一些想法。但是,如果有人解释或分享链接,那就太好了,为什么这是一个好习惯。谢谢。

【问题讨论】:

标签: java io


【解决方案1】:

为了防止在硬盘上出现不必要的读写修改循环。

理想情况下,您“输出数据”尽可能接近实际扇区大小。

每次写入数据时,都会读取整个扇区,然后用您的数据修改,然后写回磁盘。

如果你一次刷新 5 个字节,那就是很多 IO 操作必须发生。假设您有一个扇区大小为 4096 的硬盘驱动器,大约需要 120 次读取 - 修改 - 写入操作才能完成。

如果你把它缓冲到最大值,你只需要完成一个读写修改操作,这将减少等待硬盘完成这项任务的时间。

存在许多操作系统进程和可能的硬盘驱动器固件,等待一段时间,看看是否会向扇区添加更多数据,但最好帮助确保可以更快地将硬盘驱动器写入缓存刷新到磁盘。

有趣的阅读:

What goes on behind the curtains during disk I/O?
http://www.seagate.com/tech-insights/advanced-format-4k-sector-hard-drives-master-ti/

【讨论】:

    猜你喜欢
    • 2015-06-26
    • 2010-12-08
    • 2020-12-21
    • 1970-01-01
    • 2012-12-29
    • 2013-10-19
    • 1970-01-01
    • 2020-01-18
    • 1970-01-01
    相关资源
    最近更新 更多