需要一些帮助将我的结果写入文件

时间:2010-07-14 09:10:05

标签: c++ c

我的应用程序不断计算字符串并将它们输出到文件中。这将持续近一整天。但是写入文件会减慢我的申请速度。有没有办法可以提高速度?此外,我想扩展应用程序,以便我可以在一段特定的时间后将结果发送到另一个系统。

谢谢&的问候,

mouseY的

6 个答案:

答案 0 :(得分:3)

根据您的情况,有几件事情可能会有所帮助,也可能不会对您有所帮助:

  1. 考虑使用异步I / O,例如使用Boost.Asio。这样您的应用程序就不必等待昂贵的I / O操作完成。但是,您必须在内存中缓冲生成的数据,因此请确保有足够的可用数据。
  2. 考虑将字符串缓冲到一定大小,然后大批量地将它们写入磁盘(或网络)。很少有大写通常比许多小写快。
  3. 如果你想让它变得非常好C ++,意思是STL - comliant,那么让你的算法成为一个模板函数,它以output-iterator为参数。通过这种方式,您可以通过提供适当的迭代器轻松地将其写入文件,网络,内存或控制台。

答案 1 :(得分:1)

如何将结果写入套接字而不是文件。另一个程序Y,将读取套接字,打开文件,写入并关闭它,并在指定的时间后将结果传输到另一个系统。
我的意思是文件处理的过程由其他程序处理。原始程序X只是将输出发送到套接字。它与刷新文件流无关。

  

另外,我想扩展应用程序   这样我就可以将结果发送给了   一些特别的后另一个系统   时间量。

如果您只想将文件传输到其他系统,那么我认为一个简单的脚本就足够了。

答案 2 :(得分:1)

使用多个文件进行日志记录。假设,在文件大小达到1 MB后,将其名称更改为包含日期和时间的内容,并开始写入新文件,命名为原始文件名。 那么你有:

RESULTS.TXT

results2010-1-2-1-12-30.txt(2010年1月2日,1:12:30)

等等。

答案 3 :(得分:0)

您可以在内存中缓冲不同计算的结果,只在缓冲区已满时写入文件。例如,您可以设计应用程序,它可以计算100次计算的结果,并在文件中一次性写入所有这100个结果。然后计算另一个100,依此类推。

答案 4 :(得分:0)

写文件显然很慢,但你可以缓冲数据并启动单独的线程来对文件进行扭曲。这可以提高您的申请速度。

其次,您可以使用ftp将传输文件传输到其他系统。

答案 5 :(得分:0)

我认为这里有一些红色的鲱鱼。

在较旧的计算机系统上,我建议缓存字符串并执行少量大写操作而不是大量小写操作。在现代系统上,默认的磁盘缓存绰绰有余,并且进行额外的缓冲不太可能有所帮助。

我认为你没有为每次写入禁用缓存或打开文件。

可能编写非常大的文件存在一些问题,但这不是我的第一个猜测。

完成后输出文件有多大?

是什么原因导致您认为该文件是瓶颈?你有分析数据吗?

是否可能存在内存泄漏?

您发布的任何代码或统计信息都有助于诊断。