Visual studio тормозит при компиляции

Обновлено: 06.07.2024

В общем, если б не Nvidia NSight, хрен бы я перешёл на студию с QtCreator-а, а так пришлось. Теперь на топовом железе она лагает ))
Ну как лагает, при наборе текста, чувствуешь, подлагивает, потом отпускает. рывками. Я просто пробовал даже мышкой открыть меню Tools и водить мышкой вверх - вниз по меню, подсветка ячейки меню подлагивает, где в ячейке есть под меню, не просто пролетает мышь, а фризится там на пол секунды и дальше летит (хотя под меню не открывается). Может кто сталкивался с этим говном? Может пач какой есть? Это ж ваще берд какой-то, хоть 2010-ю ставь (на мой взгляд была самая нормальная и последняя из нормальных версий). Когда водишь мышкой по меню - таск менеджер показывает полную загрузку одного ядра %facepalm%
P.S.: после шустрого QtCreator-а, который летал даже на само убогом желе, эти тормоза кажутся вообще какой-то дикостью.

Как Джобс нас покинул, Apple превратилось в клоаку, как Бил Гейтс ушёл из Microsoft, VisualStudio превратилась в клоаку, ровно как и винда.

Почему у меня на старом железе ничего не тормозит?

ArchiDevil
> Почему у меня на старом железе ничего не тормозит?
2017-я?

Wow wow ) Обновил VS2017 до 15.5.1, как и обещали, лаги пропали, студия рулит! )))

-=MASTER=-
> 2017-я?
15.5.1 и 15.6 стоят. Обе отлично работают. Все 15е версии до этих работали прекрасно.

ArchiDevil
> 15.5.1
ну вот, с ней лаги пропали, до неё стояла 15.4 какая-то.
ArchiDevil
> 15.6
Это превью какие-то что ли? И чАго там нового? Просто баги поправлены?

Интеллисенс отключи, вообще летать будет.

jaguard
> Интеллисенс отключи, вообще летать будет.
Не, ты чё, как же без него. Сейчас вроде нормально стали, даже visual assist не мешает, хотя не пойму, зачем он мне, пункты рефакторинга из меню на правую кнопку пропали, теперь приходится фигнёй страдать.

В общем пора менять железо, устарело уже

-=MASTER=-
> В общем, если б не Nvidia NSight, хрен бы я перешёл на студию с QtCreator-а, а
> так пришлось.
А кто мешает писать в QTCreator-е, а отлаживать NSight-ом в студии?

-=MASTER=-
> Сейчас вроде нормально стали, даже visual assist не мешает, хотя не пойму,

Если у тебя ассист, то зачем тебе интеллисенс?

> зачем он мне, пункты рефакторинга из меню на правую кнопку пропали, теперь
> приходится фигнёй страдать.

Ради модной подсветки кода?

А рефакторинг работает, без него мне было бы сильно менее комфортно.

Изображение

MrShoor
> А кто мешает писать в QTCreator-е, а отлаживать NSight-ом в студии?
ну как кто - лень конечно, кто же ещё :) Да и гемор это, + в студии всё таки фишек всяких побольше. Да и потом, когда пишешь всякие AI и прочее, то там отлаживать нужно постоянно, т.к. почти весь код как раз на GPU (CUDA) + профайлить перформенс GPU.
jaguard
> А рефакторинг работает, без него мне было бы сильно менее комфортно.
Странно он как-то работает, уж не знаю, VisualAssist установлен, но в меню (на ПКМ) нет пункта Refactoring, который раньше был, зато есть какая-то лампочка, куда нужно нажать и увидеть функции рефакторинга:

Ну да пёс с ним, к этому можно привыкнуть, но вот что реально в студии бесит, то что этот рефакторинг не работает в любых других файлах, кроме H и CPP (ну может и шарповых работает, хз), если мне нуже рефакторинг в файлах другого типа, допустим CU или CUH (Cuda) - уже хрен, в QML - вообще полный хрен (приходится солюшен пересобирать, что бы изменения в QML учлись) и главное даже блок строчек отказывается комментировать, только по одной.

P.S.: так, между прочим, Optix 5.0 SDK пока что неоткуда скачать или я проспал?

в настройках options->text editor->file extension можно задать какой файл считать с++ или еще каким, после этого для него будет действовать подсветка и все остальное

/A\
> в настройках options->text editor->file extension можно задать какой файл
> считать с++ или еще каким
О..круто! Danke :-) Жаль, что там в списке нет редакторов CUDA и Qt/QML, Хотя CUDA от части можно плюсами подсвечивать, а QML - скриптовым редактором

При компиляции вашего проекта Visual Studio должна собрать больше 20 проектов? Значит вы, как и я, уже заметили, что эта операция занимает прилично времени. Сейчас у нас за раз компилируется 27 проектов и мы нашли способ, как ускорить этот процесс.

Для начала надо сделать жесткий диск в памяти. Подойдет любая программа, которая на это способна (например, RamDisk).

Размер диска зависит от ваших потребностей. В итоге, на диске будут все временные файлы Windows, а также все папки bin и obj со сборками ваших проектов.

Создаем на этом диске папку Temp и настраиваем на нее все пути до папок с временными файлами в системе.


Теперь нам понадобится программа linkd. Все папки bin и obj нашего проекта должны быть ссылками на созданный жесткий диск в памяти.


Для дальнейшей работы файл linkd.exe необходимо скопировать в c:\WINDOWS\system32 .

С помощью этой программы мы можем создать папку bin нашего проекта на диске в памяти и сделать на него ссылку из настоящей папки проекта. За счет того, что Visual Studio будет компилировать проекты на диск в оперативной памяти, мы и хотим получить ускорение. Такую операцию надо проделать со всеми папками bin и obj всех проектов, которые участвуют в сборке. Я написал скрипт на NAnt, который сделает это автоматически, т.к. я люблю все автоматизировать. Этот скрипт берет из файла конфигурации путь до корневой папки с проектами и название диска в памяти.

Файл SetUpRamDisk.build содержит скрипт:

Если у кого-то есть желание, этот скрипт можно порефакторить или переписать на другой язык. Чтобы линковка всех папок проекта прошла правильно, нужно записать ваши параметры в файл конфигурации.

Файл SetUpRamDisk.xml хранит конфигурацию для скрипта:

Всего-то надо вписать имя вашего диска в памяти и путь до проекта. Скрип найдет все папки bin и obj ваших проектов, сделает их ссылками на диск в памяти. Кстати, диск в памяти будет содержать структуру вашего проекта.

Для нормальной работы скрипта надо создать еще один файл - linker.bat . Он нужен только для того, чтобы в него записался сгерерированный скрипт и будет содержать только одну строчку:

Запускаем скрипт с помощью строки:

NAnt.exe /f:SetUpRamDisk.build go

И последнее, идем в настройки самой Visual Studio и выставляем количество проектов, которое может компилироваться параллельно. Эта цифра зависит от вашего компьютера и самого проекта.


После всего описанного полная сборка проектов ускорилась почти в 2 раза. Перекомпиляция проекта после нескольких изменений происходит практически за 5 секунд.

VsCode

Как только вы попадаете в поток мыслей, продуктивность мышления возрастет многократно. Вы начинаете набивать код так быстро, как только возможно, с трудом удерживая вниманием одни мысли, готовые раствориться в следующих.

Visual Studio Code стал популярен среди редакторов кода с момента своего появления. Я же долгое время сопротивлялась и не хотела его осваивать, причем не из-за возможной сложности, а скорее из-за того, что весь мой рабочий процесс уже был идеально отлажен в Sublime.

В то время, как процесс работы и написания кода оставался прежним вне зависимости от того, каким редактором я пользовалась — моя итоговая производительность резко снизилась в течение первой недели использования VSC.

Отчасти так получилось из-за того, что мне потребовалось время для адаптации к новой схеме работы. Необходимо было разобраться с сокращениями, запомнить горячие клавиши, привыкнуть к восприятию кода и установить полезные расширения.

В конце концов я вышла на привычный рабочий ритм и вряд ли когда-нибудь захочу использовать другой редактор. Visual Studio Code — это бесплатный, надежный и легковесный программный продукт, который также имеет крупное сообщество пользователей. Его можно причислить к списку самых удачных детищ Microsoft.

Ниже я указала 10 полезных рекомендаций, которые помогли мне и помогут вам ускорить процесс написания кода.

1. Сниппеты

Сниппеты являются основным ускорителем продуктивности, т.к. избавляют вас от большей части ручного ввода. Сперва это может показаться неким жульничеством, но вы смиритесь, как только столкнетесь с необходимостью постоянного повторения, например, при вводе переключателей для представлений в Angular.

Написание кода во многом заключается в понимании того, где и какие шаблоны использовать. Сниппеты ускоряют ваш рабочий процесс благодаря заранее сконфигурированным частям кода, которые всегда оказываются в быстром доступе.

В результате вы больше внимания уделяете оценке качества кода и его функциональности, нежели самому набору команд. Знаю, что это прозвучит странно, но если наше время на реализацию проекта ограничено, то чем больше мы потратим времени на обдумывание структуры и архитектуры, тем больше шансов создать надежный и легко масштабируемый продукт.

Применение сниппетов также может помочь вам освоить новый фреймворк или библиотеку.

С Vue я еще не работала, но судя по указанным данным, набор Vue 2 Snippets от hollowtree был установлен более 900 000 раз, зарекомендовав себя как весьма многообещающее расширение.


Вы также можете загрузить расширение напрямую из VS Code, через указанную вкладку.

2. IntelliSense

Intellisense — это просто модное название автодополнения. Тем не менее работает оно гораздо продуманнее стандартного.

Преподносится эта функция как одна из существенно влияющих на продуктивность всего процесса работы в Visual Studio Code. Несмотря на это, многие пользователи редактора не применяют ее должным образом.

Если навести указатель на определенный элемент кода, эта функция предоставит вам дополнительные детали печати и позволит отследить путь создания вплоть до источника. Основная польза IntelliSense заключается в способности предугадывать ваш следующий шаг.

Например, когда вы начинаете прописывать объект, она выдает вам список потенциально подходящих методов. Чем больше знаков вы введете, тем точнее станет список предлагаемых вариантов, и вам останется только выбрать в нем подходящий. Если же вы не уверены, то документация с пояснениями по каждому методу также находится под рукой.

Для тех, кто приступает к работе с VS Code на базе знания Java или C++, эта возможность не станет новшеством. Я применяла нечто подобное, когда работала с Eclipse. Что же касается проектов в JavaScript — эта возможность, наряду с удобным перемещением между связанными элементами кода, существенно ускоряет процесс.

3. Встроенный терминал

Его установка сэкономит ваше время, упростив навигацию между несколькими экранами, что также позволит вам обнаруживать ошибки во время компиляции, не прерывая сам рабочий процесс.

Открыть терминал можно, нажав ctrl + ` .

Изначально он запускается с указанием корневой директории вашего рабочего пространства.

Для открытия еще одного терминала нажмите shift + ctrl + ` .


4. Просмотр ссылок и обновление имен

Когда вы работаете над крупным проектом, то некоторые классы, методы и другие элементы могут быть задействованы во множестве мест. VSC позволяет вам просмотреть сформированный список мест использования той или иной ссылки и быстро отследить ее изначальный источник.

Для этого вам достаточно кликнуть правой кнопкой на выбранном методе, функции или ссылке, которую вы хотите отследить, и выбрать “просмотреть ссылки”. В качестве альтернативы можно выделить нужный элемент и использовать сочетание клавиш shift + F12 , но такой способ сработает только в среде Windows.

Функция обновления имен, в свою очередь, дает вам возможность изменять ссылки. Это чаще всего полезно при рефакторинге, а также в случаях, когда вы обнаруживаете несоответствие имени ссылки ее назначению или связанной области.

5. Форматирование и контроль технического долга

Использование инструментов форматирования позволит вам не только ускорить процесс разработки, но и гарантировать определенный уровень единообразия. Это оказывается весьма кстати при командных разработках, когда каждый разработчик работает в привычном лишь ему стиле форматирования.

Инструменты форматирования обычно основаны на определенном соглашении относительно кода и гарантируют, что все находятся на одной странице, когда дело доходит до расстановки скобок, пробелов и оценки его внешнего вида.

Несмотря на то, что инструменты форматирования могут помочь сократить число командных аргументов и улучшить внешний вид кода, они никак не устранят технический долг. Поэтому следующее расширение, которое я вам представлю контролирует технический долг.


Он использует серию стандартных метрик для анализа сложности и потенциального долга в коде. Это расширение предназначено исключительно для JavaScript и TypeScript. Способное предоставлять мгновенные рекомендации по улучшению, оно поможет вам выработать привычку писать чистый и легко читаемый код.

6. Горячие клавиши

Каждый раз, когда ваши пальцы покидают клавиатуру, время написания кода увеличивается на несколько секунд. Это может казаться незначительным, но смена положения рук или переключение на другую задачу могут вывести вас из состояния потока.

Многие разработчики стремятся все делать с клавиатуры — просто потому, что так быстрее.

Использование горячих клавиш экономит ваше время, которое в противном случае вы тратите на поиск нужных пунктов меню или файлов.

Их список вы можете посмотреть, нажав ctrl + k + s .


Если же вы не хотите заучивать новый набор горячих клавиш, то можете воспользоваться пользовательской настройкой и назначить их самостоятельно. Вы также можете импортировать настройки из других популярных редакторов.

Здесь вы найдете расширения для перенастройки встроенных горячих клавиш в Visual Studio Code.

7. Режим дзен

Этот режим разворачивает ваш редактор на весь экран. Для его активации вместо стандартного нажимания трех клавиш, вам потребуется набрать серию команд.

Существует несколько различных вариантов это сделать. Для начала нужно заглянуть в раздел горячих клавиш.

В моем случае по умолчанию установлена команда ctrl + z и k . То есть сначала я нажимаю ctrl + z , а потом k , а не все три вместе.

8. Git

VSC поддерживает git и позволяет производить все привычные коммиты, не выходя из его интерфейса. Стейдж, коммит, откат, комментарии — эти и другие возможности, доступные из командной строки, можно задействовать прямо из редактора.

Для этого достаточно нажать на добавление файла (плюс), а затем правой кнопкой на сам файл для вызова возможных опций.

Несмотря на то, что все это можно сделать из консоли или через десктопные приложения GitHub, возможность выполнения или внесения изменений, не выходя из редактора, позволит ускорить рабочий процесс..

9. Дебаггер

Visual Studio Code оснащен дебаггером, который позволяет вам назначать точки прерывания выполнения кода для тех мест, где вы хотите проанализировать происходящее более подробно.

Процесс дебаггинга подразумевает гораздо больше, чем просто проверку посредством консоли разработчика в Chrome. К примеру, вы предполагаете в каком месте могла возникнуть проблема: в определенной строке, функции или методе.

В таких случаях остановка кода в назначенных точках дает вам возможность устранить эту проблему прямо во время его выполнения, а также проверить локальное состояние, состояния вызовов и другие компоненты.


Все, что для этого нужно ,— это перейти в дебаггер через значок жучка в левой нижней части и запустить приложение кнопкой play.

Вы также можете открыть консоль и просмотреть текущее состояние, используя соответствующие запросы.

По умолчанию VSC запускает дебаггер на основе Node.js, но вы также можете запустить его на базе самого Chrome. В обычном режиме у вас нет возможности приостанавливать выполнение вашего приложения, но с помощью дебаггера вы с легкостью сможете это сделать, назначив точки прерывания.

В то же время вы получаете возможность более пристально оценить различные элементы кода и их состояния в тех или иных местах.

10. Live Share

Пробовали ли вы когда-нибудь редактировать Google Docs совместно с кем-нибудь еще? Live share работает по тому же принципу, только связь устанавливается через ваш аккаунт Azure или GitHub.

Это расширение очень полезно при командной работе. Оно позволяет производить ускоренный дебаггинг, пир-программирование и в целом сокращает время написания кода.

Заключение

Эффективность разработчика заключается не только в его способности грамотно писать код, но также в его способности рационально применять вспомогательные инструменты.

Visual Studio Code — это поистине фантастическое решение из разряда бесплатного и доступного программного обеспечения, которое способно существенно помочь вам в процессе написания кода. Будет очень полезным окунуться в освоение его особенностей, чтобы повысить показатели вашей продуктивности.

Мои настройки:

Я использую Visual Studio 2012 Express, в настоящее время, но у меня была та же проблема в Visual Studio 2010 Express также. Мое решение хранится на сетевом диске; в частности, это Мои Документы перенаправлены на сетевой диск, если это имеет значение. (Не должно. Бывают случаи, когда мой сайт загружается очень быстро при этой настройке.)

обычно я загружаю в Internet Explorer 9, но та же проблема возникает в Firefox.

симптомы:

система загрузит мои символы сотни раз. В основном, следующее, Но есть по крайней мере 300 таких строк, каждая с когда-либо-так-немного разными DLL-файлами для тех же CSHTMLs:

в приведенном выше, у меня есть три DisplayTemplates: "контакт", "местоположение" и "StatusCode". Похоже, что IIS загружает символы дважды для каждого вызова displaytemplate. Таким образом, если я показываю таблицу из 100 записей, которая вызывает все три из этих displaytemplates, загружается 600 отдельных символов.

это тоже не быстрая операция. При просмотре файлов журнала, создаваемых IIS, для загрузки каждого символа требуется около 200 мс. Таким образом, сверхдлинные задержки.

что я пробовал:

  • Debug или release версию, это не имеет значения.
  • размещение моего проекта в полной реализации IIS в интернете сервер работает очень быстро без проблем. , IIS Express 7.5 и IIS Express 8.0 все имеют проблему.
  • удалить все точки останова ничего не делает.
  • Очистить Решение или удаления .СУО тоже ничего не делает.
  • если я восстанавливаю IIS Express или удаляю My DocsIISExpress папка или восстановление/переустановка Visual Studio → проблема может уйти, но только на некоторое время, прежде чем она придет в норму спина.

любой совет вообще приветствуется.

обратите внимание, что эта машина имеет Symantec Endpoint Protection, которая имеет историю причинения ущерба. Но отключение его сразу (хорошо быть администратором) не исправило проблему.

у меня есть теория на данный момент. Я думаю, что это все потому, что я работаю с перенаправленной папкой из сетевого ресурса. Пока отладчик просматривал сотни строк "загруженных символов", я остановился, чтобы посмотреть, что он делает. Это было в моем код, загружающий DisplayTemplate у меня. Шагнув в шаблон, выведите следующее:

похоже, Visual Studio перекомпилирует мой displaytemplate каждый раз это называется, что снова, сотни раз. Моя теория заключается в том, что Visual Studio компилирует файл, сохраняет его в сетевом ресурсе, сетевой ресурс затем каким-то образом штампует на нем новое время, а Visual Studio затем думает, что файл изменился, и, таким образом, Visual Studio перекомпилирует его еще раз. Только теория хотя, я действительно понятия не имею.

во-первых, по-видимому, у меня есть автономные файлы (это настольный компьютер в офисе, мне все равно). Я собираюсь отключить, перезагрузить и повторить попытку завтра.

плюс, перемещение моего проекта, как есть, на локальный C: исправляет его. Он загружается очень быстро. Но это не идеально в рабочей среде. Я теряю предыдущие версии, мой код не копируется вообще, если я не скопирую его вручную, и он больше никому не доступен.

Я могу сделайте с копированием его взад и вперед от C к сетевому ресурсу, если дело доходит до него. Гораздо более раздражает ждать две минуты для каждой загрузки страницы.

Читайте также: