Here are some benchmarks that show the difference.
status-benchmarks-gix.zip
In short:
- direct
lstat checks are like 10x slower on Windows and they don't scale
- one has to do dirlists which come with stats information for all entries
- this is why Git has a filesystem cache that probably works exactly that way, uses dirlists when needed to provide stat information, at least on Windows.
To have fast status information on Windows, one would have to provide some sort of trait which can do caching, and which ideally is shared across threads with the ability to list multiple directories at the same time.
Research
Here are some benchmarks that show the difference.
status-benchmarks-gix.zip
In short:
lstatchecks are like 10x slower on Windows and they don't scaleTo have fast status information on Windows, one would have to provide some sort of trait which can do caching, and which ideally is shared across threads with the ability to list multiple directories at the same time.
Research
gitoxideas well