[Feature Request] Enable faster UID search when using `xrefmap.json` for .NET types
Is your feature request related to a problem? Please describe.
When using xrefmap for .NET types.
It's recommended to use xrefmap file that is located at https://github.com/dotnet/docfx/raw/main/.xrefmap.json. (By #9659.)
Problems
This file contains 312235 reference items.
But the sorted: true property is not set.
So when searching for specific uid. It requires to execute liner search.
Describe the solution you'd like
As far as I've tested.
These items are already sorted by UID with InvariantCulture order.
So it can use faster binary search. if sorted: true property is set.
Additional Information Alternatively. It might possible to use following xrefmap files. Is these URLs are still supported?
-
https://learn.microsoft.com/en-us/dotnet/.xrefmap.json(316 MB) -
https://learn.microsoft.com/en-us/dotnet/xrefmap.yml(283 MB)
- This yml file set
sorted: trueby default
Sounds like BasicXrefMapReader should internally turn the map it into a dictionary to speed up lookup.
On my environment ToDictionary() takes about 125[ms].
And when getting last element. it takes following times.
| Liner search | 56 [ms] |
| Binary search | 11 [ms] |
So it might make sense to create a UID lookup table. (Although it will increase memory footprint)