是不是更好地不断写入文件,或者将数据保存在内存中并在最后写入?

时间:2017-07-31 23:53:02

标签: performance io

我正在编写一个测试套件,用于根据公开代码对我的算法进行计时。每次测试运行时间不到一秒,从小问题大小的非常快到大问题的~900ms。

我希望每次测试写一行,每行不超过200个字符。我需要打印两种算法中每种算法所花费的时间,它们之间的误差以及用于生成问题的种子。我希望在一次运行中运行2000次测试,但这个数字也应该是灵活的。如果有必要,我可以将它们分解成更小的运行。

我希望在一个会话中运行几千个测试,这可能需要几个小时。因此,如果在一批测试中途发生任何事情,确保数据不会丢失至关重要。但是不断写入文件可能太慢了。

我正在尝试确定是否应该在每次测试后写入日志文件,或者将结果存储在内存中,并且只在一批(例如10次)测试之后或者在所有测试结束时打印它们。这些不同的方法平均有多大差异(速度)?

1 个答案:

答案 0 :(得分:1)

  

我希望在一个会话中运行几千个测试,这可能需要几个小时。 因此,如果在一批测试中途发生任何事情,确保数据不会丢失至关重要。但是不断写入文件可能太慢。

我想你在那里得到了答案。实际上写入文件的速度并不慢(如果你只写了一两行来报告测试结果)。

编辑:我刚刚看到你的评论,你只想写200个字符,然后不要打扰以下内容。直接写下来。

如果要编写大量文本,则可能需要在执行测试时创建另一个处理所有写入的线程。但是,我建议不要这样做,因为如果您的测试已经是多线程或者也在使用I / O,那么它可能会减慢您的测试并搞砸您的结果。 (如果你不熟悉线程之间的线程和通信,也可能会引入很多问题。)

从阅读你的帖子我也可能怀疑你对每次测试的时间安排感兴趣。如果是这种情况,您可能只想暂停计时器,写入文件,然后在每次测试之间恢复。