gpt4 book ai didi

c++ - 在 C++ 高效存储上,刷新文件策略

转载 作者:太空狗 更新时间:2023-10-29 21:21:31 24 4
gpt4 key购买 nike

情况是这样的:一个 C++ 程序正在以一种有规律的方式无休止地生成数据。数据需要非常快速地存储在持久性存储中,因此不会妨碍计算时间。无法提前知道将存储的数据量。看完thisthis帖子,我最终遵循了这个天真的策略:

  1. 创建一个 std::ofstream ofs
  2. 正在打开一个新文件 ofs.open("path/file", std::ofstream::out | std::ofstream::app)
  3. 使用运算符 << 添加 std::string
  4. 关闭文件已终止ofs.close()

尽管如此,我仍然对以下内容感到困惑:

  1. 由于数据只会在之后读取,是否可以使用二进制(ios::binary)文件存储?这样会更快吗?
  2. 我知道冲洗应该由 std::ofstream 自动完成,我可以安全地使用它吗?我应该注意对内存有什么影响吗?我是否必须优化 std::ofstream在某些方面(改变它的大小?)?
  3. 我应该担心文件越来越大吗?我应该在某个时候关闭它并打开一个新的吗?
  4. 是否使用 std::string有一些缺点吗?是否有一些可以避免的隐藏转化?
  5. 正在使用 std::ofstream::write()更有利?

感谢您的帮助。

最佳答案

1.Since the data will only be read afterwards, is it possible to use a binary (ios::binary) file storage? Would that be faster?

由于任何存储设备上的所有数据类型都是二进制告诉编译器保存它,因此或多或少会导致 0 和 1 的优化保存。这取决于……很多事情以及您之后将如何使用/阅读它。其中一些列在 Writing a binary file in C++ very fast 中.在 HD 上存储时,代码的性能始终受限于特定 HD 的速度(这是普遍的事实)。

试着给你的问题一个“确定性/框架”,它们太笼统而不能说成“问题”

关于c++ - 在 C++ 高效存储上,刷新文件策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22385872/

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