docfx icon indicating copy to clipboard operation
docfx copied to clipboard

[Feature Request] Enable faster UID search when using `xrefmap.json` for .NET types

Open filzrev opened this issue 2 years ago • 2 comments

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?

  1. https://learn.microsoft.com/en-us/dotnet/.xrefmap.json (316 MB)
  2. https://learn.microsoft.com/en-us/dotnet/xrefmap.yml (283 MB)
  • This yml file set sorted: true by default

filzrev avatar Mar 28 '24 00:03 filzrev

Sounds like BasicXrefMapReader should internally turn the map it into a dictionary to speed up lookup.

yufeih avatar Mar 28 '24 02:03 yufeih

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)

filzrev avatar Mar 29 '24 04:03 filzrev