Open
Description
@JeremyKuhne has a library called Touki that he uses to dive into various aspects of .NET/.NET Framework performance. One of his recent explorations has been a zero-allocation glob expander/enumerator that he wrote with the explicit intention of us being able to use it. It looks very promising:
Runtime repo (.NET 9) - **/*.cs
Method | Mean | Error | StdDev | Ratio | Gen0 | Gen1 | Allocated | Alloc Ratio |
---|---|---|---|---|---|---|---|---|
MSBuild | 311.5 ms | 3.58 ms | 2.99 ms | 1.00 | 1500.0000 | 500.0000 | 34.39 MB | 1.00 |
GlobFileSystemEnumerator | 183.0 ms | 2.34 ms | 2.19 ms | 0.59 | 333.3333 | - | 9.74 MB | 0.28 |
I don't have the numbers at hand, but it was even better in the more complex example he just showed me. The tests should show this.
It doesn't yet implement all of our feature set (e.g. Excludes), but it should be able to be added.
We should look at incorporating the methods from this library and comparing them to our existing implementation.