我正在阅读"O'Reilly Java IO"一书,有一个建议:
文件 аrе 通常最好以块大小的小倍数编写 磁盘,通常为 512、1024 或 2048 字节。
我试图找到任何解释,但我做不到。我只是有一些想法。但是,如果有人解释或分享链接,为什么这是一种很好的做法,那就太好了。谢谢。
防止硬盘上的读-写-修改循环。
理想情况下,您"输出数据"尽可能接近实际扇区大小。
每次写入数据时,都会读取整个扇区,然后使用您的数据进行修改,然后写回磁盘。
如果一次刷新 5 个字节,则必须执行大量 IO 操作。假设您有一个扇区大小为 4096 的硬盘驱动器,大约需要 120 次读取 - 修改 - 写入操作才能完成。
而如果将其缓冲到最大,则只需完成一个读写修改操作,这将减少等待硬盘驱动器完成此任务的时间。
许多操作系统进程和可能的硬盘驱动器固件存在等待一段时间,以查看是否会将更多数据添加到扇区,但最好帮助确保硬盘驱动器写入缓存可以更快地刷新到磁盘。
有趣的阅读:
在磁盘 I/O 期间幕后发生了什么?
http://www.seagate.com/tech-insights/advanced-format-4k-sector-hard-drives-master-ti/