Visual studio тормозит intellisense
В этой статье предлагается ряд действий, которые можно попытаться выполнить, если среда Visual Studio работает медленно. Дополнительные рекомендации по повышению производительности можно найти в статье Советы и рекомендации по улучшению работы Visual Studio.
Обновление Visual Studio
Если в настоящее время вы используете Visual Studio 2015, скачайте Visual Studio 2017 или Visual Studio 2019 бесплатно, чтобы ознакомиться с улучшенными возможностями этой версии. Решения загружаются в два-три раза быстрее, чем в Visual Studio 2015. Помимо этого, оптимизирована производительность и в других областях. Visual Studio 2017 и Visual Studio 2019 совместимы с Visual Studio 2015, поэтому вы не потеряете ничего при пробном использовании.
Если вы уже используете Visual Studio 2017, убедитесь в том, что у вас установлена версия 15.6 или более поздняя. По данным тестирования, в версии 15.6 решения загружаются в два–три раза быстрее. Его можно скачать здесь.
Расширения и окна инструментов
У вас могут быть установлены расширения, замедляющие работу Visual Studio. Сведения об управлении расширениями с целью повышения производительности см. в разделе Изменение параметров расширений для повышения производительности.
У вас также могут иметься окна инструментов, замедляющие работу Visual Studio. Сведения об управлении окнами инструментов см. в разделе Изменение параметров окна инструментов для повышения производительности.
Оборудование
Если вы планируете обновление оборудования, имейте в виду, что твердотельный накопитель (SSD) сильнее влияет на производительность, чем дополнительный объем ОЗУ или ЦП с более высоким быстродействием.
Если вы добавляете диск SSD, то чтобы добиться оптимальной производительности, систему Windows следует установить на нем, а не на жестком диске (HDD). То, на каком диске находятся решения Visual Studio, не так важно.
Кроме того, не запускайте решение с USB-накопителя. Скопируйте его на жесткий диск или диск SSD.
Помогите нам улучшить службу
I have a bigger C++ Project. I use the Micrsoft C++ Extension with the default settings. Intellisense takes sometimes over 1 minute to catch up with suggestions. In order to solve the problem, I went through the settings. I've seen it is possible to set the Intellisense engine to "Tag Parser", it solves all the performance problems as expected, but unfortunately, it deactivates Error Squiggles. Is it possible to combine Tag Parser Intellisense with the default error checking, if the error checking takes a minute it wouldnt be a such a problem? Or do you have other ideas to solve the performance problem?
1 Answer 1
Depends on what compiler your running. I'm using Visual Studio Build Tools. For my UE4 project, source file Intellisense is pretty snappy but header files are really slow. Sadly I believe headers will always be slow on large project's using the default Intellisense. This is because VSCode recalculates Intellisense with every line of a header file you write.
Off topic info: This is also why you should disable Auto PCH with “C_Cpp.intelliSenseCacheSize” set to 0. Let's say you have a class with a large AutoPCH cache file of 1 Gigabyte (not uncommon with Unreal Engine). VSCode is now deleting and writing this cache with every line you type in a header file. This won't help with Intellisense speed unfortunately.
Back to topic:
Make sure to custom tailor your "C_Cpp.default.includePath" and only include the paths you need. This is used for Default Intellisense but will also be used for Tag Parser if you don't specify any Tag Parser path with "C_Cpp.default.browse.path". Also note that any path in "C_Cpp.default.includePath" is NOT recursively searched for subfolders. You can override this behavior by adding /** to the end of the path. But use it wisely.
More info:
I forgot to mention about Tag Parser Intellisense. Tag parser info relies on "C_Cpp.default.browse.path" for include files. If you don't specify anything in "C_Cpp.default.browse.path" then:
- Anything in "C_Cpp.default.includePath" will be use for tag parser Intellisense.
- Your project's path will automatically be added (see Note below on why this might be bad)
Note: Any path used for the browse path that doesn't have /* at the end will be searched recursively for any subfolders that also have header files to cache.
Note: For multifolder projects, all folder project directories(recursive) will also be added to the tag parser includes for one big Tag Parser cache file.
The Tag Parser is still used when using Default Intellisense. It's used for switching between header and source (Alt+O) and for finding symbols. So you should still tweak the Tag Parser paths to your liking.
For large projects the Tag Parser can take 20+ minutes to finish creating it's cache file when you first open the project. You wont get Tag Parser Intellisense until it's finished. For Unreal Engine 4.26 this file is around 1.5 Gigabytes. Good thing though is that is doesn't get deleted and recreated like the Default Intellisense cache files.
You may need to tweak your "C_Cpp.default.browse.path" instead of not specifying one and and letting VSCode do what it wants.
I will say for source files you will miss having Default (Context Aware) Intellisense. But you can try Tag Parser Intellisense if you can get it to work.
Note: You can see when Intellisense is working. Default Intellisense is a fire symbol and Tag Parser Intellisense is a cylinder found on the bottom bar.
После написания прошлой статьи, я понял, что у меня осталось еще некоторое количество информации, не относящейся к ускорению компиляции решения, но позволяющей несколько повысить производительность самой Visual Studio в процессе работы над кодом. А поскольку мы все-таки работаем над кодом изрядное количество времени, намного приятнее делать это в быстро работающей IDE. К сожалению, в этой статье не будет графиков, поскольку весьма тяжело измерить, насколько стало быстрее открываться меню или какое-то окно. Тем не менее, я надеюсь, что кто-то может найти для себя в этих советах что-то ценное и сэкономить себе немного времени.
Добавьте /nosplash к ярлыку запуска Visual Studio
Честно говоря, время запуска уменьшится не сильно, но психологически будет казаться, что Студия грузится быстрее.
Отключите кнопку F1
Это делается в «Environment->Keyboard». Вы ведь всё-равно не пользуетесь этой кнопкой, правда? А если случайно нажмёте, то, в зависимости от версии VS начнут открываться новые окна или запуститься браузер — всё это весьма долго.
Выключите анимацию
«Environment->General->Animate environment tools». Оставим анимацию фанатам красивостей. А мы ведь суровые программисты, нам ни к чему.
Отключите стартовую страницу
Она занимает время при запуске студии (в особенности, если лезет в Интернет за всякими новостями и советами). Отключается в «Environment->Startup».
Выключите «Track Active Item in Solution Explorer»
Неужели Вы правда ею пользуетесь? Если нет — выключите. Отключается в «Projects and Solutions»
Отключение разнообразных красивостей
Вот тут об этом написано детальнее. Отключается в «Environment->General->Visual experience»
Удаление лишних плагинов
Каждый плагин — это минус к производительности Студии. Если у Вас стоит что-то лишнее — удаляйте.
- Закройте Visual Studio.
- Удалите все .ncb файлы для Вашего решения.
- Удалите или переименуйте файл C:\Program Files\Microsoft Visual Studio 9.0\VC\vcpackages\feacp.dll (часть «9.0» отличается для разных версий Visual Studio).
Запуск Студии и компиляция проекта перед приходом на работу
На моей рабочей машине каждое утро, за час до моего прихода на работу запускается скрипт, закрывающий Visual Studio, делающий update кода из репозитория и по-новому запускающий Студию и компиляцию решения в ней. Приходя на работу я вижу откытую IDE, в которой сразу видно текущее состояние решения (компилируется\нет) и лог процедуры update, по которой понятно что именно изменилось со вчерашнего вечера. Всё это экономит мне 10 минут ежедневно.
I have been having issues with Intellisense in Microsoft Visual Studio 2012. I will be working in a project, editing code and whatnot (after a period of time, anywhere from 5 minutes to over an hour) and all of a sudden, no more code suggestions or intellisense. Both seem to stop working completely at the same time.
The only solution that I have tried is to reset all my settings, close out of Visual Studio completely and reopen the project again. Is there a better solution or an update that will fix this?
5,590 6 6 gold badges 32 32 silver badges 54 54 bronze badges 2,182 4 4 gold badges 20 20 silver badges 29 29 bronze badges +1. I had the same problem several times in VS 2010. Restart of VS usually helps. There is no need to reset settings. It happens rarely, so never was a big deal for me.30 Answers 30
I should note that I haven't had the issue since upgrading my RAM. I can't confirm if it's related but the problem was prevalent when I had 2-4GB RAM. No problems since going to 8 and 16GB.
If only one file/window appears to be affected, close and reopen that file. If that doesn't work, try below.
In Visual Studio:
- Click Tools->Options->Text Editor->All Languages->General
- Uncheck "Auto list members"
- Uncheck "Parameter information"
- Check "Auto list members" (yes, the one you just unchecked)
- Check "Parameter information" (again, the one you just unchecked)
- Click OK
If this doesn't work, here's a few more steps to try:
- Close all VS documents and reopen
- If still not working, close/reopen solution
- If still not working, restart VS.
For C++ projects:
MSDN has a few things to try: MSDN suggestions
The corrupt .ncb file seems most likely.
- Close the solution.
- Delete the .ncb file.
- Reopen the solution. (This creates a new .ncb file.)
Logging possible causes:
- Copy/pasting controls in a source page. I found that my designer.vb file didn't update from this, either.
- Copy/pasting code from another page that caused an error because the code copied referred to a control that wasn't on the page I was pasting to.
- C++ project has corrupt .ncb file
(Please add to comments if you notice behavior that causes this.)
What works for me is removing the dynamically-built .suo file (Solution User Options), in the .vs (hidden) directory located at he same path as the solution file.
I have this problem sometimes coming back, and it's on different project's/solutions, but never VS wide. New Projects always work fine.
Running VS2015 Professional Update -2-
I am having the same issue; Intellisense randomly will stop showing in some files, but not others. I just had it happen to me again. Hitting Ctrl + Space won't show anything in Form1 , switching to Form2 or any other class will pop up the list as expected. Restarting Visual Studio usually does the trick, though it's highly annoying and ridiculous for such a basic feature to be broken.
I spent a lot of time researching the same problem. Some solutions related this bug with some referenced assemblies. Others said that Microsoft.Windows.Design.Extension.dll and .Interactivity.dll should be in the references of the project. But none of these solutions worked for me.
I think it is a bug in Visual Studio 2012, Microsoft has to fix it.
What worked for me is by disabling and then re-enabling the Resharper
Goto
Tools -> Options-> Resharper ->General
Click
Suspend -> This disables the resharper
Then check your Intellisense is working or not. In my case, it did and then I resumed the Resharper.
If this does not work, you might need to Goto
Resharper -> Options-> Environment -> Intellisense -> General
And
Change Intellisense to Visual Studio
I found a solution that works for me 100% of the time (I do not have ReSharper installed). Pressing Refresh in Solution Explorer makes IntelliSense come back.
It didn't work for me with all those steps. Strangely enough I noticed Intellisense was working for another solution in visual studio 2015, but not for a specific one.
I located and deleted the .suo file and restarted visual studio. That fixed it for me.
I had the same problem on Visual Studio 2010 on C++ and I surpassed it by Tools -> Options -> Text Editor -> C/C++ -> Advanced -> Disable database -> False, Ok ; Close VS; open VS and voila.
After a while, I solved this way:
2) Check these options "Auto list members" and "Enable virtual space".
With visual studio > 2015 I deleted the .suo file. (search for it in your project through file explorer)
Restart visual studio and you're good to go.
I am facing the same issue with Visual Studio 2015 Preview. I have closed that respective file and re-opened it. That fixes it for me :).
In my case, I had added an .ascx.cs into the project via right-click => "Include in Project", but the project had it set as "Content" instead of "Compile". Once I set this to "Compile", intellisense began working again.
5,109 3 3 gold badges 31 31 silver badges 48 48 bronze badgesMS Visual Studio 2017 Pro, C++ projects
Too many good answers for this question. This worked for me:
IntelliSense works only when i load the project by double clicking the solution file.
I tried all the above answers with unfortunately no luck. Dll's, setting, dependencies. you name it. It sucks that you have to go through all that for an autocomplete. miss my Vim config.
I have VS2012 update 4 and the problem is intermittent, but once it strikes on that particular page being edited it is there to stay. One solution is simply to close the page and re-edit it.
Here's some KBD shortcuts to try to reboot it, but don't know if they work.
I think this is another IS bug. it's had lots of issues in the past.
@TonyL's answer didn't work for me, but I noticed Intellisense stopped working in the foo class after I changed the method signature in the bar class.
Closing and reopening the foo.cs file fixed it.
One of the thing that just helped me is
- Deleting every project file that is out there. My project has 10 folder, 30+ files.
- Recreating the project.
This takes about 5 mins - but saves a lot of time as intellisense actually started working.
One thing to note was that the memory usage (right top corner of VS 2013 ultimate) shows about 40% drop.
158k 24 24 gold badges 233 233 silver badges 390 390 bronze badgesTry to install the update 1 package, link. I have had the same problem and solved when I installed the update.
I had the same issue, it turned out to be that nuget packages were not automatically downloaded for a solution i downloaded from the repository freshly, thus intellisense was not available since none of the required packages to show the right suggestions were available.
im currently watching a MVA python tutorial on youtube and noticed my intellisence had also disappeared, soon after they expalined why,
something along the lines of this (excuse my lack of proper coding vocabulary i am new to programming but i have found the solution)
Answer: " Visual studio can not always guess what you are trying to input - therefore it does not always realise that it needs to give you a hint, for example if you are trying to use a string within a variable and need intellisense to give you options for that strings content, you must sometime tell visual studio that this variable actually is a string.
Я думаю этого и в самой Microsoft не знают и не скажут даже если ты им свой проект пришлёшь и попросишь попрофилировать, так что лучше завязывай заниматься этим говном.
Blew_zc
> ReSharper ставь.
Я пробовал его раньше, когда с Intellisense было всё хорошо. С ним студия вообще падала каждые 3-5 минут. И даже если этот баг уже исправили, мне надо чтобы у всех без решарпера в студии проблем не было.
Zefick
> Я думаю этого и в самой Microsoft не знают и не скажут даже если ты им свой
> проект пришлёшь и попросишь попрофилировать
Должен же быть способ узнать, на какой строчке у анализатора затруднение произошло.
>так что лучше завязывай заниматься этим говном.
Да я уже занялся другими вещами, где новых шаблонов практически не вводится - синтезатором музыки. Разве что добавил шаблонные алгоритмы для работы с кучей, которые нужны были парсеру MIDI для синхронизации событий. И после кардинальной переделки синтезатора и, казалось бы, упрощения архитектуры, студию стало колбасить непонятно из-за чего. Точно момент обнаружить было нельзя, потому что этот можно было списать на ошибки компиляции. Но теперь я их исправил, а студия по прежнему глючит.
Вот какие закономерности я нашёл:
1) Большинство файлов работают отлично и студия их подсвечивает, если не открывать проблемные файлы.
2) Я нашёл проблемный заголовочный файл, который вызывает вышеописанный глюк. Все файлы, которые его включают, тоже заражаются этой проблемой. Все файлы, которые он включает не проблемные.
3) Глюк длится какое-то время. В это время одно ядро процессора полностью загружено процессом Microsoft Visual C++ Package Server и потребление памяти этим процессом быстро в течение минуты растёт до 3,8 ГБ, потом быстро падает почти до нуля.
4) Если к моменту падения потребления памяти был открыт не проблемный файл, он может начать подсвечиваться, всё быстро и шустро работает, а процесс занимает всего 15 МБ памяти. А может и не начать и потребление памяти снова станет расти по кругу. Иногда этот цикл всё же разрывается, но непонятно по какой причине.
Казалось бы, поиск сузился до одного проблемного файлов. Но вот дело в том, что этот файл самый обычный и очень короткий. Никаких шаблонов там нет, обычный класс с одним перегруженным оператором скобок и полями Array<float>, с которым никогда проблем не было и который уже почти год не менялся. А самые шаблонно тяжёлые файлы подсвечиваются, когда глюка нет, то есть не являются проблемными.
gammaker
Ну сделай минимально воспроизводимый проект. Может и не в этом файле дело. Потом отправишь багу в майкрософт.
ArchiDevil
> Ну сделай минимально воспроизводимый проект. Может и не в этом файле дело.
> Потом отправишь багу в майкрософт.
Как? У меня 500 исходных файлов в проекте и я не имею ни малейшего понятия, какой из них вызывает проблему. И судя по всему, там играет роль сложная комбинация факторов. Я закомментировал код из "проблемного" файла, после этого остальная его часть стала подсвечиваться. Но при этом другие файлы, которые только что работали и никак не были связаны с этим файлом, стали вызывать тот же глюк. Причём те файлы я не менял уже больше месяца и с ними всё было хорошо. Их уже закомментировать не могу, потому что от их содержимого половина проекта зависит.
Отключить intellisense - и всего делов.
Не для всех языков не во всех версиях студии его можно убрать через настройки. Там где нельзя - просто прибиваешь dll.
Zab
> Отключить intellisense - и всего делов.
> Не для всех языков не во всех версиях студии его можно убрать через настройки.
> Там где нельзя - просто прибиваешь dll.
Он мне нужен. С ним скорость разработки раза в 2 выше. И всем пользователям библиотеки тоже что ли советовать выключать Intellisense?
Кажется я подбираюсь к разгадке. Когда я добавляю в класс поле типа класса, который я недавно сильно переделывал, моментально отваливается Intellisense и срабатывает глюк. Стоит его закомментировать и прибить Package Server, как сразу всё восстанавливается. Значит надо смотреть, что там с этим классом не так. Там присутствуют некоторые шаблоны и есть что подозревать.
gammaker
> Причём те файлы я не менял уже больше месяца и с ними всё было хорошо.
Ну бинарный поиск в истории ревизий, тогда. Найдешь коммит, там как-нибудь проще будет найти что случилось.
ArchiDevil
> Ну бинарный поиск в истории ревизий, тогда. Найдешь коммит, там как-нибудь
> проще будет найти что случилось.
Это было всё в одном большом коммите. Я перелопатил сразу много всего - больше 100 файлов. А нерабочие коммиты делать рука не поднималась. Они же потом будут в истории висеть. Да и в нерабочем состоянии, когда ошибки компиляции, Intellisense имеет свойство глючить сам по себе.
В общем, вроде нашёл и исправил проблему. Суть оказалось в том, что объект мог сконструироваться из nullptr разными способами напрямую и косвенно, и видимо Intellisense залипал из-за того, что не мог выбрать нужный. Хотя у компилятора проблем с этим не было.
Но пока не могу воспроизвести её на минимальном примере, чтобы можно было зарепортить. Возможно ещё какие-то факторы влияют, которые я пока не учёл в своём минимальном примере.
gammaker
> Я перелопатил сразу много всего - больше 100 файлов. А нерабочие коммиты делать
> рука не поднималась.
Ну тогда сам виноват. Теперь придется страдать :)
gammaker
> А нерабочие коммиты делать рука не поднималась. Они же потом будут в истории висеть.
Для этого в любой не совсем примитивной системе контроля версий есть ветки.
ArchiDevil
> Ну тогда сам виноват. Теперь придется страдать :)
Уже нет, уже решено. Сейчас собираю минимальный пример. Аддитивным синтезом не получилось, теперь пробую субтрактивным.
Zefick
> Для этого в любой не совсем примитивной системе контроля версий есть ветки.
Но потом же всё равно в master сливать и там в логе будет весь этот мусор. Либо историю переписывать, сливая коммиты вместе, но мне лень с этим заморачиваться.
gammaker
> Но потом же всё равно в master сливать и там в логе будет весь этот мусор.
Можно сливать так, что не будет.
Читайте также: