Dan*_*ley 76
两者都是相同基本功能的包装器,即unlink()系统调用。
权衡用户空间实用程序之间的差异。
rm(1):
unlink(1):
rm(1)多个参数相比更慢。您可以通过以下方式证明差异:
$ touch $(seq 1 100)
$ unlink $(seq 1 100)
unlink: extra operand `2'
$ touch $(seq 1 100)
$ time rm $(seq 1 100)
real 0m0.048s
user 0m0.004s
sys 0m0.008s
$ touch $(seq 1 100)
$ time for i in $(seq 1 100); do rm $i; done
real 0m0.207s
user 0m0.044s
sys 0m0.112s
$ touch $(seq 1 100)
$ time for i in $(seq 1 100); do unlink $i; done
real 0m0.167s
user 0m0.048s
sys 0m0.120s
Run Code Online (Sandbox Code Playgroud)
然而,如果我们谈论的是对系统unlink(2)函数的纯粹调用,我现在意识到这可能不是你所考虑的。
您可以unlink()对目录和文件执行系统操作。但是,如果该目录是其他目录和文件的父目录,则指向该父目录的链接将被删除,但子目录将悬而未决。这不太理想。
编辑:
抱歉,澄清了unlink(1)和之间的区别unlink(2)。平台之间的语义仍然会有所不同。
删除的缓慢部分是文件系统代码和磁盘内容,而不是 unlink() 系统调用的用户空间准备。
即:如果速度差异很重要,那么您不应该将数据存储在文件系统上。
unlink 只是一个rm“光”。rm 有更多功能,但它们做同样的事情。
| 归档时间: |
|
| 查看次数: |
43202 次 |
| 最近记录: |