更高效地写入硬盘
Writing to hard disk more efficiently
我正在使用std::fstream将图像流写入硬盘。由于大多数硬盘驱动器都有 32MB 的缓存,因此创建一个缓冲区来累积高达 32MB 的图像数据然后写入磁盘是否更有效,还是只将每个图像写入磁盘更有效?
缓存用作读/写缓存,以缓解由于排队引起的问题。以下是我对磁盘的体验:
- 如果磁盘不是SSD,那么串行写入比查找文件更好。Seek 是 I/O 性能的杀手锏。 磁盘通常以扇区大小
- 写入。扇区大小通常为 512b 或 4k(较新的磁盘)。尝试一次写入一个扇区的数据。
- 捆绑 I/O 始终比多个小型 I/O 快。原因很简单,磁盘上的处理器要刷新的队列较小。
- 无论你能从记忆中服务什么,服务。仅在必要时使用磁盘。您始终可以在写入时修改/使缓存条目失效,具体取决于您的可靠性策略。确保不要交换,因此首先,内存缓存大小必须合理。
- 如果要执行此 I/O 管理,请确保不要对操作系统页面缓存进行双重缓冲。O_DIRECT为此。
- 如果可靠性不是问题,请使用非阻塞。O_NONBLOCK
系统的每个部分,从fstream
到磁盘驱动程序,都比您的应用程序更了解特定效率。
如果您尝试过,则无法改进各种缓冲方案,因此请不要打扰。
相关文章:
- C++中高效的大型稀疏块压缩线性方程
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- 如何在C++中高效地构造随机骰子
- 如何实现高效的算法来计算大型数据集的多个不同值?
- 更高效地在微控制器上对C++进行基准测试
- 从C++无序集合中高效提取元素
- 高效的字符串截断算法,按顺序删除相等的前缀和后缀
- C++中特征对角矩阵类型的高效存储
- 高效简单的结构比较运算符
- 使用 Rcpp 的高效矩阵子集
- C++ 包含特征矩阵的类的高效算术运算符重载
- CUDA 高效的 nd-array(张量)切片
- 通过搜索硬盘驱动器查找文件目录
- 大多数基本类型的高效二进制序列化
- RAM高效C++属性
- 如何为球形物体和三角形地形提供高效的碰撞检测和响应
- 如何实现四个 i8 元素组的高效_mm256_madd_epi8点积
- 如何在嵌套映射(C++)中高效地查找密钥
- 在C++中高效地保存许多连续记录的图像
- 更高效地写入硬盘