【发布时间】:2017-07-31 23:53:01
【问题描述】:
我正在编写一个测试套件,用于根据公开代码对我的算法进行计时。每次测试运行不到一秒,从小问题的非常快到大问题的约 900 毫秒不等。
我希望每次测试写一行,每行不超过 200 个字符。我需要打印两种算法所花费的时间、它们之间的错误以及用于产生问题的种子。我希望一次运行 2000 个测试,但这个数字也应该是灵活的。如有必要,我可以将它们分解成更小的运行。
我希望在一个会话中运行数千个测试,这可能需要几个小时。因此,如果在一批测试的中途发生任何事情,确保数据不会丢失至关重要。但是不断写入文件可能太慢了。
我正在尝试决定是否应该在每次测试后写入日志文件,或者将结果存储在内存中并仅在一批(例如 10 次测试)或所有测试结束时打印它们。这些不同的方法平均会产生多大的差异(速度)?
【问题讨论】:
-
“可能”太慢了——你试过了吗?处理这个问题的简单方法是写入缓冲区并将缓冲区写入文件,这就是 stdio 的工作方式。
-
另外,这是 C++ 还是 C?
-
DeoxNa,你每次测试打印多少字节?有多少测试?如果没有一些更具体的数字,很难判断这一点,尽管正如 Ryan 所说,答案可能是“让 stdio 处理缓冲”。
-
@Ray 我希望每次测试写一行,每行不超过 200 个字符。我需要打印两种算法所花费的时间、它们之间的错误以及用于产生问题的种子。我希望一次运行 2000 个测试,但这个数字也应该是灵活的。如有必要,我可以将它们分解成更小的运行。
-
@Olaf 公平点。由于所有文件 I/O 都在主机上完成,我认为没有必要添加 cuda 标签。
标签: performance io