I'm faced with the same performance problem for our customer.
I this particular case we are using more than 2000 CompletionItems that can be filtered by 10 different groups.
Also in different groups, there are a lot of similar variables, commands that includes in autocomplete list each time when typing new character.
The performance is poor when trying to find "variable" in the list that contains the typed text. It takes 400-600ms of UI thread to show filtered items, even if result is 3-4 items.
I also tried to left only "StartWith" filter, because it's the common use case for our customers, but I cannot found how to do it properly. It always closes autocomplete box if any of the "ItemMatcher" was removed.
Basically I'm using
session.MatchOptions = CompletionMatchOptions.IsCaseInsensitive | CompletionMatchOptions.UseAcronyms | CompletionMatchOptions.UseShorthand
match options, but any other combination doesn't show me autocomplete box at all.
So the question 1. Can we improve performance somehow for this particular case? Maybe some custom ItemMatcher can help.
Question 2. Can we leave only "StartWith" ItemMatcher to display only CompletionItems that matched only this particular filter?
How to reproduce: