gpt4 book ai didi

c++ - 更高效地写入硬盘

转载 作者:行者123 更新时间:2023-11-28 03:35:31 32 4
gpt4 key购买 nike

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

最佳答案

缓存用作读/写缓存以减轻由于排队引起的问题....以下是我使用磁盘的经验:

  1. 如果磁盘不是 SSD,那么串行写入比查找文件更好。查找是 I/O 性能的 killer 。
  2. 磁盘通常以扇区大小写入。扇区大小通常为 512b 或 4k(较新的磁盘)。尝试一次写入一个扇区的数据。
  3. 组合 I/O 总是比多个小型 I/O 更快。原因很简单,磁盘上的处理器要刷新的队列较小。
  4. 无论您能记住什么,都可以提供。仅在必要时使用磁盘。根据您的可靠性策略,您始终可以在写入时修改/使缓存条目无效。确保你不交换,所以你的内存缓存大小必须是合理的,首先。
  5. 如果您要执行此 I/O 管理,请确保您没有使用操作系统页面缓存进行双重缓冲。 O_DIRECT 为此。
  6. 如果可靠性不是问题,请使用非阻塞。 O_NONBLOCK

关于c++ - 更高效地写入硬盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10998464/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com