After upgrading to version 0.9.6 the CPU load on devenv jumped considerably.
I was disabling extensions one by one and discovered that vsvim itself is responsible.
Please what info I can provide to help solving the issue.
Can you give me a bit more information on what you're doing when the CPU load increases? Is it when Visual Studio is just idling or is there a specific set of operations that is causing a problem?
Visual Studio is just idling.
I was testing it as follows:
1. I turned on Visual studio with vsvim enabled - so far so good (devenv idle at max 5% CPU)
2. I open my project with no files opened - (no change.. max 5% CPU)
3. I open 1st file - CPU usage jumps to 50%
Opening more files doesn't change much and I also didn't start editing the files yet.
When I disable all other plugins (except CodeMaid that I can only uninstall) the situation is the same.
As before - if I can provide any other info / help please ask.
I'm writing lots of jjjjj, kkkkk, www, bbb etc. in my code without vsvim :/
That's odd. VsVim typically doesn't do any actions on idle and hence I wouldn't expect it to cause this problem. Here's a couple more questions
I've isolated the issue - the files that I was opening are quite big (~1700 lines of code) - I know it's bad design / coding but it's not my code so I'm excused :P
Usually the methods in this file / class are collapsed to definition (Ctrl+M, O) - devenv CPU usage jumps to 50%,
but when I expand everything (Ctrl+M,Ctrl+X) CPU usage drops to 0% :D
Conclusion - VsVim is having a hard time dealing with lots of collapsed blocks of code, which is not really an issue if you follow a good design guidelines and use small code files.
Please close this issue if you want :) Thank you for a great plugin.
Ah, thanks for tracking it down to an issue with outlining. I can get a repro of the problem now.
What's happening here is VsVim's support for external editor actions (like Reshaprer and Visual Studio Snippets) is getting in the way. One way external editor actions are monitored is by looking at the annotations / tags they put onto the visible screen. R# and Snippets for example tag text in a very specific way which can be queried in the Visual Studio API. So on every layout change VsVim will scan the visible text for these tags and take appropriate actions to integrate well with the edits it finds.
The visible screen is rarely bigger than 80-100 lines. Getting the tags for that small of a line range is very fast. VsVim wasn't filtering out collapsed regions though so in the collapsed case it was getting tags for thousands and thousands of lines. That's much too slow.
I'm working on a fix for this. It will definitely be included in 1.0. If it turns out to be small enough I may release it as a hot fix to 0.9.6.
Thanks for reporting this!
Fixed in the next version.