我正在尝试确定我的代码运行速度比我想象的慢大约四倍的原因。
在我的代码中,我迭代循环100000次。每500个循环一次我将一行打印到一个文件中(以追加模式打开它,打印该行并关闭它)。是否有可能在一台体面的计算机(HPC集群)上将12小时运行变为48小时运行?
希望我的问题很明确。
答案 0 :(得分:2)
尝试运行A / B测试:
在测试A中,您按照描述进行日志记录 - 打开并关闭每个日志消息的文件。
在测试B中,尝试在开始时打开文件,在整个运行过程中保持打开状态,并且只在程序退出时关闭它。
打开和关闭文件所需的时间取决于您的操作系统,C IO库实现和存储子系统。我怀疑测试B会更快,但你需要在你自己的软件和硬件上进行一些实验才能确定。
答案 1 :(得分:1)
只需pause it几次,然后查看堆栈。 无论是什么使它需要4倍的时间将出现在4个堆栈样本中的大约3个中。 你不能错过它。
问题可能是打开/关闭文件, 但我怀疑你是否只做了200次。 无论如何,没有必要假设。 只需暂停一下,确定问题是什么。