我制作了一些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);
答案 0 :(得分:2)
如果文件存在,则在第二种情况下必须将其截断。这需要额外的工作,并且可以很好地解释其中的差异。
如果文件不存在,则第一次调用将失败,第二次调用将创建该文件。创建文件需要工作,而不是简单地发现它不在那里。
答案 1 :(得分:1)
截断意味着可能修改SD卡内容。如果截断的文件非常大,则可能需要一些时间。
文件创建无论如何都要写入SD卡,因此它肯定比只读取更慢。另一个影响写入速度的因素是SD卡的年龄。如果有许多写入,即使是小写,搜索新的未使用的块可能会花费相当长的时间。