c ++打开文件需要多长时间

时间:2011-11-16 18:24:33

标签: performance runtime

我正在尝试确定我的代码运行速度比我想象的慢大约四倍的原因。

在我的代码中,我迭代循环100000次。每500个循环一次我将一行打印到一个文件中(以追加模式打开它,打印该行并关闭它)。是否有可能在一台体面的计算机(HPC集群)上将12小时运行变为48小时运行?

希望我的问题很明确。

2 个答案:

答案 0 :(得分:2)

尝试运行A / B测试:

在测试A中,您按照描述进行日志记录 - 打开并关闭每个日志消息的文件。

在测试B中,尝试在开始时打开文件,在整个运行过程中保持打开状态,并且只在程序退出时关闭它。

打开和关闭文件所需的时间取决于您的操作系统,C IO库实现和存储子系统。我怀疑测试B会更快,但你需要在你自己的软件和硬件上进行一些实验才能确定。

答案 1 :(得分:1)

只需pause it几次,然后查看堆栈。 无论是什么使它需要4倍的时间将出现在4个堆栈样本中的大约3个中。 你不能错过它。

问题可能是打开/关闭文件, 但我怀疑你是否只做了200次。 无论如何,没有必要假设。 只需暂停一下,确定问题是什么。