取消任何比rm更快的链接?
两者都是一个unlink()
系统调用的基本函数的包装。
衡量用户空间使用率之间的差异。
rm(1)
:
unlink(1)
:
rm(1)
多个参数相比,速度较慢。 你可以用下面的方法来certificate它的区别
$ 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
但是,如果我们正在谈论一个对系统unreadulterated调用unlink(2)
函数,我现在意识到可能不是你所考虑的。
你可以在目录和文件上执行unlink()
系统。 但是,如果该目录是其他目录和文件的父目录,那么与该父目录的链接将被删除,但这些子目录将被留下。 这是不理想的。
编辑:
对不起,澄清unlink(1)
和unlink(2)
之间的区别。 平台之间的语义仍然有所不同。
删除的缓慢部分是文件系统代码和磁盘的东西,而不是unlink()系统调用的用户空间准备。
即:如果速度差异很重要,那么您不应该将数据存储在文件系统上。
取消联系只是一个“光”。 RM有更多的function,但他们做同样的事情。
在POSIX规范级别,与rm 链接相比, rm所指定的要紧得多。
如果你的脚本必须跨越操作系统运行,那么使用rm的结果的可移植性似乎会更好。