open(2)

直到今天才注意到一个问题,就是以 O_CREAT 模式打开一个新文件,比 O_APPEND 追加一个文件要慢得多!同事简单测试了一下,结果是这样:

  1. O_CREAT 比 O_APPEND 至少慢三倍。(以前只是直观的感觉创建文件会慢,但没想到会慢这么多)
  2. 创建一个文件,写4次,每次4k,(共16k)再关闭。所耗费的时间,大概是给一个文件追加16k时间的1.5倍
Topic: 技术

评论

O_CREAT需要建立新的v-node结构体,其所在的目录文件的v-node信息也要修改,而O_APPEND 都不用这种操作,可以使用shell命令touch来测试建立一个随机的文件需要的时间