Tuning ls, ls -l, find ., find . -ls performance for very large dirs (60000+ files/dir)

Brian Inglis Brian.Inglis@SystematicSW.ab.ca
Wed Apr 9 04:36:20 GMT 2025


On 08/04/2025 19:05, Mark Liam Brown via Cygwin wrote:
> Are there tuning variables to improve ls, ls -l, find ., find . -ls
> performance for very large dirs?
>
> If we have a SMB dir with 60000+ entries a simple ls -l can take MANY
> minutes (22+mins), while cmd.exe dir just floods the terminal with
> results immediately.

I just remembered noticing my /var/log/ entries jumped looking at my last Cygwin 
upgrade log, so before I clean it up into subdirs, let's try some stuff!

If you just want a directory name dump, use \ls -U|--sort=none or \ls -f which 
is like -aU; command prefix \ overrides the usual aliases like -CF --color=auto:

$ time \ls -1U /var/log/ | \wc -lwmcL
   54049   54049 1885787 1885787      38

real	0m0.336s
user	0m0.046s
sys	0m0.295s
$ time \ls -1f /var/log/ | \wc -lwmcL
   54051   54051 1885792 1885792      38

real	0m0.347s
user	0m0.140s
sys	0m0.232s

even with -l, it's only a few seconds:

$ time \ls -lU /var/log/ | \wc -lwmcL
   54050  486455 4966716 4966716     102

real	0m15.891s
user	0m1.421s
sys	0m14.560s
$ time \ls -lf /var/log/ | \wc -lwmcL
   54052  486473 4966835 4966835     102

real	0m15.858s
user	0m1.405s
sys	0m14.374s

and skipping user and group lookup does not save anything:

$ time \ls -gloU /var/log/ | \wc -lwmcL
   54050  378357 3777638 3777638      80

real	0m15.699s
user	0m1.562s
sys	0m14.155s
$ time \ls -gGlf /var/log/ | \wc -lwmcL
   54052  378371 3777713 3777713      80

real	0m15.908s
user	0m1.389s
sys	0m14.498s

-- 
Take care. Thanks, Brian Inglis              Calgary, Alberta, Canada

La perfection est atteinte                   Perfection is achieved
non pas lorsqu'il n'y a plus rien à ajouter  not when there is no more to add
mais lorsqu'il n'y a plus rien à retrancher  but when there is no more to cut
                                 -- Antoine de Saint-Exupéry


More information about the Cygwin mailing list