This commit adds a cache that remembers whether a given path is a file or a directory, based on the results of std::fs::read_dir. This reduces the number of executed syscalls and improves the performance of the library.
Here is a simple benchmark that uses glob to find the amount of Rust files in the tests directory of a rustc checkout.
This commit adds a cache that remembers whether a given path is a file or a directory, based on the results of
std::fs::read_dir
. This reduces the number of executed syscalls and improves the performance of the library.Here is a simple benchmark that uses
glob
to find the amount of Rust files in thetests
directory of arustc
checkout.Results on my PC (approximately 19k Rust files are in that directory):
statx
syscall countBefore
After
Syscalls were measured with
strace <program> 2> out.txt && cat out.txt | wc -l
and time was measured usinghyperfine
.Fixes: https://github.com/rust-lang/glob/issues/79
This pull request was created in cooperation with students of the Rust course on the VSB-TUO university.