Как ускорить Visual Studio 2008 для многопроектных решений? - PullRequest
3 голосов
/ 21 октября 2011

Мне известно, что есть пара вопросов, которые похожи на мои, например, здесь , здесь , здесь или здесь . Все же ни один из них действительно не отвечает на мой вопрос. Вот и все.

Я создаю модифицированную версию браузера Chromium в VS2008 (в основном написана на C ++). Он имеет 500 проектов в одном решении с множеством зависимостей между ними. Как правило, есть две проблемы:

  • Каждый раз, когда я начинаю отладку (нажимаю F5 или зеленую кнопку Play) в первый раз за сеанс, VS останавливается, и требуется несколько минут, прежде чем он восстанавливается и фактически начинает отладку. Обратите внимание, что я отключил сборку перед запуском, потому что всякий раз, когда я хочу собрать свой проект, я использую F7 явно. Я не понимаю, почему так просто «просто» запустить скомпилированный бинарный файл. Вероятно, VS проверяет все deps и следит за тем, чтобы все было актуально, несмотря на мою просьбу не строить решение перед запуском. Это способ ускорить это?
  • Каждый раз, когда я выполняю сборку, это занимает около 5-7 минут, даже если я изменил только одну инструкцию в одном файле. Большую часть времени занимает процесс связывания, поскольку большинство проектов генерируют статические библиотеки, которые затем связываются в одну огромную библиотеку DLL. По-видимому, инкрементное связывание работает только в 10% случаев и все еще занимает значительно больше времени. Что я могу сделать, чтобы ускорить его?

Вот некоторая информация о моем программном и аппаратном обеспечении:

  • MacBook Pro (середина 2010 г.)
  • 8 ГБ ОЗУ
  • двухъядерный процессор Intel i7 с HT (что делает его похожим на 4-ядерный в диспетчере задач)
  • 500 ГБ Serial ATA; 5400 об / мин (Hitachi HTS725050A9A362)
  • Windows 7 Профессиональная 64-битная
  • Visual Assist X (с отключенной раскраской кода)

Вот некоторые вещи, которые я заметил:

  • При связывании используется только одно ядро ​​
  • При повторном запуске решения за один сеанс это происходит намного быстрее (до 2-3 секунд)

Ответы [ 2 ]

1 голос
/ 12 ноября 2011

при поиске информации о компоновщике VS я наткнулся на эту страницу:

http://msdn.microsoft.com/en-us/library/whs4y2dc%28v=vs.80%29.aspx

Также обратите внимание на две дополнительные темы на этой странице:

  • Более быстрые сборки и файлы заголовков меньшего размера
  • Исключение файлов при проверке зависимостей
0 голосов
/ 05 марта 2012

Я переключился в режим сборки компонента для проекта Chromium, что уменьшило количество файлов, которые необходимо связать. Режим сборки компонента создает набор небольших библиотек DLL, а не набор статических библиотек, которые затем связываются в огромные chrome.dll. Также я часто использую инкрементные ссылки, что делает ссылки еще быстрее. Наконец, связывание во второй и последующие периоды становится быстрее, поскольку необходимые файлы уже кэшируются в памяти и доступ к диску не требуется. Таким образом, при работе с приращениями и частом соединении я получаю всего 15 секунд для связывания webkit.dll, где я в основном меняю код.

Что касается выполнения, то оно работает так же, как и при связывании - оно работает медленно только в первый раз, и при каждом последующем запуске оно становится все быстрее и быстрее, пока не потребуется менее 3-5 секунд для запуска браузера и загрузки всех символов. Windows кэширует файлы, к которым чаще всего обращаются в память.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...