2

我有一个循环处理一些数据的 Qt C++ 程序。

它将每个数据处理结果附加到文本文件的末尾。数据处理操作被放置在一个循环中,因此程序可以在几秒钟内产生超过800个结果并一个一个地写入它们(即分别)。

我觉得这么多的I/O操作对电脑硬盘来说不是很好,所以我组织了一个数组来存储数据处理结果,当数组长度超过200时,程序将其附加到文件中并清理,而不是数组再次变为 200 以上,依此类推。

但我不确切知道 -真的需要吗?也许这只是浪费 RAM,我应该在没有这些数组(缓冲区)的情况下将数据附加到文本文件?毕竟,程序写入相同数量的数据,独立于它以何种方式写入。

4

1 回答 1

1

一般来说,由于c++机制提供了缓冲io,你可以随意改变它。在您的上下文中,您提到的“800 个结果”并不能说明输出数据的确切大小。所以你可能技能过度了。仅供参考,函数 ios::rdbuf() 将获得一个指向 streambuf 对象的指针,该对象表示流的内部缓冲区。然后您可以调用 streambuf::pubsetbuf(char * s, streamsize n) 来设置一个给定大小的新内部缓冲区。您还可以从http://en.cppreference.com/w/cpp/io/basic_ios/rdbuf找到详细信息。

于 2013-04-21T03:37:33.107 回答