情况如下:c ++程序以常规方式无休止地生成数据。数据需要非常快速地存储在持久存储中,因此不会妨碍计算时间。无法知道将提前存储的数据量。 在阅读this和this帖后,我最终会遵循这种天真的策略:
std::ofstream ofs
ofs.open("path/file", std::ofstream::out | std::ofstream::app)
<<
ofs.close()
尽管如此,我仍然对以下内容感到困惑:
ios::binary
)文件存储?会更快吗?std::ofstream
自动完成,我可以安全地使用它吗?我应该注意对记忆有什么影响吗?我是否必须在某些方面优化std::ofstream
(更改其大小?)?std::string
有一些缺点吗?是否有一些可以避免的隐藏转换?std::ofstream::write()
更有利吗?感谢您的帮助。
答案 0 :(得分:2)
1.由于之后只能读取数据,是否可以使用二进制(ios :: binary)文件存储?会更快吗?
由于任何存储设备上的所有数据类型都是二进制告诉编译器保存它,因此将导致或多或少地优化保存0&amp; s; 1&#39;第这取决于......许多事情以及你将如何使用/阅读它。其中一些列在Writing a binary file in C++ very fast中。 当在高清存储时,代码的性能总是局限于特定HD的速度(这是普遍的事实)。
尝试给出一个&#34;确定性/帧&#34;对于你的问题,它们过于笼统,不能说明问题&#34;
答案 1 :(得分:1)
我可能没有回答你的直接问题,但请原谅我,如果我退后一步,请原谅。
如果我正确理解了这个问题,那么关注的是写入磁盘的时间过长会延迟无休止的数据生成。
也许你可以只为写作分配一个线程,而在主线程上继续处理。
写入程序线程可以定期唤醒,以便向磁盘写入到目前为止生成的内容。
两个线程之间的通信可以是: