我注意到只有对find
的第一次调用需要很多时间(并且多次访问硬盘驱动器,因为它会产生噪音),同时连续的调用也得到了优化。
命令find
如何做到这一点?
我在bash
和fish
上看到了相同的行为。在ext4
和ntfs
上具有相同的行为(即使我仅在ntfs
上执行了> 1mil个文件的测试)
例如
# on SSD
$ time find . -type f -name "*.m"| wc -l
33
real 0m1,189s
user 0m0,090s
sys 0m0,295s
$ time find . -type f -name "*.m"| wc -l
33
real 0m0,203s
user 0m0,053s
sys 0m0,149s
# on SSD
time find . -type f -name "*.java"| wc -l
547
real 0m11,982s
user 0m1,645s
sys 0m1,012s
$ time find . -type f -name "*.java"| wc -l
547
real 0m4,184s
user 0m1,581s
sys 0m0,970s
在具有超过300万个文件的文件夹中,所需时间从1-2分钟变为:
# on HD
$ time find . -type f | wc -l
3746258
real 0m2,778s
user 0m0,753s
sys 0m1,037s