繁体   English   中英

更有效地写入硬盘

[英]Writing to hard disk more efficiently

我正在使用std :: fstream将图像流写入硬盘。 由于大多数硬盘驱动器都有32MB缓存,创建缓冲区以累积高达32MB的图像数据然后写入磁盘是否更有效,或者将每个图像写入磁盘是否有效?

缓存用作读/写缓存,以缓解排队问题....以下是我对磁盘的体验:

  1. 如果磁盘不是SSD,那么串行写入比搜索文件更好。寻求是I / O性能的杀手。
  2. 磁盘通常以扇区大小写入。 扇区大小通常为512b或4k(较新的磁盘)。 尝试一次写一个扇区的数据。
  3. Bunching I / O总是比多个小I / O快。 原因很简单,磁盘上的处理器有一个较小的队列来刷新。
  4. 无论你能从记忆中获得什么,服务。 仅在必要时使用磁盘。 您始终可以在写入时执行修改/无效的缓存条目,具体取决于您的可靠性策略。 确保不要交换,因此您的内存缓存大小必须合理。
  5. 如果您正在进行此I / O管理,请确保不要对操作系统页面缓存进行双重缓冲。 O_DIRECT为此。
  6. 如果可靠性不是问题,请使用非阻塞。 O_NONBLOCK

fstream到磁盘驱动程序的系统的每个部分都比您的应用程序甚至可以访问的更多地了解特定的效率。

如果你尝试过,你无法改进各种缓冲方案,所以不要打扰。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM