-
Notifications
You must be signed in to change notification settings - Fork 29.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
IntelliSense filtering has become slow again in huge lists #1923
Comments
I can't really reproduce the 10 second hang on a 20k suggestion filter, but I do see some slowness. More like 1-2 seconds here. |
May be it has something to do with the camel case smart search? I face the slowdowns with OmniPascal (case insensitive language and all symbols use PascalCase or UPPER_CASE). With JavaScript I can reproduce it with a hang of ~5 seconds using the following file: https://gist.github.com/Wosi/0487f72965a26de07c92 See the instructions in the comments. The speed of filtering depends strongly on the typed characters. Filtering for "2" is very slow in this case. |
Excellent, I can now reproduce, thanks for the sample! |
Here is a much slower real world example: https://gist.github.com/Wosi/9603b02b0fc4268abc16 |
Here is a saved profile |
We might have to move from |
Did a bunch of optimisations:
@Wosi it would be cool if you could give it a try, building from our sources. Both your examples take just under 1 second on my machine now. I have a few more ideas of how to make this faster, by dropping a lot of the tree machinery and just implementing a virtual list, but this'll do for now. |
Thank you, can't wait to try them out ❤️ |
@joaomoreno First of all: Thank you! When the real world example runs in under a second then it's a powerful improvement. Unfortunately I can't build VSCode from source and check it against the real world project until wednesday evening. Since the insider channel will be updated tomorrow I think it's better to test against the insider build, isn't it? I'll give you feedback as soon as possible! P.S: The real world example is a full adaptation of the completion items I receive from the OmniPascal language service to JavaScript. So it's a good indicator when it works nicely now. |
@Wosi sure, let's do that then! Here are my results on the real world example, when triggering Intellisense and then typing The first peak is the trigger and takes |
With the test case from #1923 (comment) I see a ~ 1 second delay |
Sorry, I wasn't able to setup a proper dev environment in order to build VSCode on my own. Thanks a lot! it's a big improvement even though it's still not working fluently. |
@Wosi I'm currently working on a separate widget implementation for this. 👍 |
Given the changes in #2702, here are some updated results: |
Awesome! Good job, @joaomoreno! |
I'm still seeing really long load times on version 1.0.0 when using as my external editor for Unity. For example triggering IntelliSense via hotkey with my cursor at the end of |
@joaomoreno moving back to you to response to additional comments. |
@nrj Your screenshot shows the initial loading process for code completion which is handled by a plugin. VSCode's internal code completion filtering (= the topic of this ticket) takes place after the plugin has delivered the suggestion items. The bahviour you are facing seems to be an issue of the plugin which provides the code completion (I guess it's OmniSharp). |
Copied from the inital issue (https://github.com/Microsoft/vscode-extensionbuilders/issues/80)
@joaomoreno fixed this issue on 2015-11-06 telling that there were too many event listeners. With the December update it has become slow again. VSCode hangs now for ~10 seconds working on the same suggestion list.
I really hope it's going to be fast again with the January update. It's not funny to work in huge projects now.
The text was updated successfully, but these errors were encountered: