需要多长时间才能打开一个文件

需要多长时间才能打开一个文件

问题描述:

我想确定我的代码运行速度大概比我想象的慢四倍。需要多长时间才能打开一个文件

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

希望我的问题很清楚。

+0

此问题需要更多信息。你如何衡量整体时间和文件I/O?你能发布一些相关的代码吗?您是否尝试过使用某种分析工具来查看程序花​​费的最多时间? – Joe

+0

做数学。 100000/500 = 200写入。 36小时*每小时60分钟/ 200次写入=每次写入10.8分钟。我会说,写文件是不太可能的全部原因。 – AShelly

+1

@如果OP正在写日志消息,则需要10分钟的时间... [to tape](http://www.quantum.com/Products/Autoloaders/SuperLoader3/Index.aspx) – ObscureRobot

尝试运行的A/B测试:

测试A,你做你描述的日志 - 打开和关闭文件,每个日志消息。

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

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

只是pause it几次,并看看堆栈。无论如何,需要4次的时间才会出现在4个堆栈样本中的大约3个上。 你不能错过它。

这可能是问题是打开/关闭文件, 但我怀疑,如果你只做了200次。无论如何,没有必要进行假设。 只需暂停几次,并确定问题所在。