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



我制作了一些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);

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

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

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

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

最新更新