打开'write'文件所需的时间比'read'打开文件多10-50倍

时间:2012-11-28 09:19:57

标签: c++ file-io

我制作了一些cpp应用程序,用于统计Android设备中外部SD卡的i / o操作。

我注意到如果我打开文件进行读取,则需要几十微秒 - 例如138微秒,写入时需要5265微秒,是38倍

为什么?

编辑:在'O_WRONLY'案例中 - 该文件以前不存在。

我的具体代码如下:

int fd = open(file_name, O_RDONLY);

int fd = open(tmp_name,O_CREAT|O_TRUNC|O_WRONLY);

2 个答案:

答案 0 :(得分:2)

如果文件存在,则在第二种情况下必须将其截断。这需要额外的工作,并且可以很好地解释其中的差异。

如果文件不存在,则第一次调用将失败,第二次调用将创建该文件。创建文件需要工作,而不是简单地发现它不在那里。

答案 1 :(得分:1)

截断意味着可能修改SD卡内容。如果截断的文件非常大,则可能需要一些时间。

文件创建无论如何都要写入SD卡,因此它肯定比只读取更慢。另一个影响写入速度的因素是SD卡的年龄。如果有许多写入,即使是小写,搜索新的未使用的块可能会花费相当长的时间。