【发布时间】:2015-09-15 02:27:01
【问题描述】:
我刚刚发现find . 比find . | cat 慢。这是在我的主目录中执行time find . 3 次的结果:
First:
real 0m4.385s
user 0m0.546s
sys 0m2.072s
Second:
real 0m4.090s
user 0m0.514s
sys 0m1.798s
Third:
real 0m4.197s
user 0m0.508s
sys 0m1.905s
改为使用time find . | cat 会显着改善结果:
First:
real 0m2.988s
user 0m0.378s
sys 0m1.649s
Second:
real 0m2.768s
user 0m0.370s
sys 0m1.471s
Third:
real 0m2.768s
user 0m0.370s
sys 0m1.471s
如您所知,find . | cat 更快。我对此感到非常困惑,cat 所做的唯一事情就是将其输入复制到其输出,对吗?我真的不知道为什么会这样,如果有人能告诉我为什么会这样,我会很高兴。
为了记录,这是find . | wc的输出:
246646 477986 25198490
谢谢。
【问题讨论】:
-
@LucasTrzesniewski:不。在 bash 中,
time将 pipeline 作为参数,而不是信号命令。 -
@choroba 我的错,不知道这是一个内置的 shell
-
您实际上是如何进行时间测试的?我想知道缓存是否与它有关。对我来说,我发现我第一次做
find .是最慢的,不管我是否通过cat管道它。第二个咒语,随后(可能直到缓存未命中)更快
标签: bash performance pipe sh cat