Была ли Visual Studio 2008, 2010 или 2012 (v11) написана для использования многоядерных?

StackOverflow https://stackoverflow.com/questions/1814015

Вопрос

В принципе, я хочу знать, была ли среда разработки Visual Studio IDE и / или компилятор в 2010 и 2012 годах написанный использовать многоядерную среду (я понимаю, что мы можем настроить таргетинг на многоядерные среды во всех версиях, используя параллелизм, но это не мой вопрос).

Я пытаюсь решить, должен ли я получить двухъядерный процессор с более высокой тактовой частотой или четырехъядерный процессор с более низкой тактовой частотой, поскольку я хочу попытаться выяснить, какой процессор обеспечит мне максимально возможную работу с Visual Studio 2010 или 2012 (v11) (ide и фоновый компилятор).

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

Я программист на VB, они добились значительных улучшений производительности в 2010 и 2012 годах, поздравляю (за исключением ужасного дизайна в серой гамме и везде прописные буквы), но я хотел бы иметь возможность беспрепятственно использовать VS...у кого-нибудь есть какие-нибудь идеи?Кроме того, я не слишком беспокоюсь о времени загрузки решения, поскольку одновременно я кодирую только один проект.

Спасибо.

Это было полезно?

Решение

Я думаю, вам, вероятно, лучше использовать двухъядерный процессор с более высокой тактовой частотой.Я думаю, что VS (и большинство приложений сегодня) пока не пользуются большими преимуществами многопоточности.В VS могут быть запущены десятки потоков, но, я думаю, только подмножество операций действительно использует их в полной мере.Большая часть реализации VS - это COM-компоненты C ++, которые выполняются в потоке STA, поэтому поток пользовательского интерфейса выполняет основную часть работы во многих сценариях.Тот факт, что многие части оболочки VS переписываются в управляемый код как часть VS2010, поможет устранить гораздо больше этих древних зависимостей от STA компонентов.Как упоминали другие, некоторые ключевые сценарии (например, создание большого решения) уже используют преимущества нескольких ядер (MSBuild хорошо работает параллельно), поэтому, если они доминируют в том, что вас волнует, то чем больше ядер, тем лучше.Но для таких вещей, как использование пользовательского интерфейса IDE и фоновая компиляция, я думаю, что большинство из них по-прежнему в основном однопоточны.У меня на работе четырехъядерный процессор, и я редко вижу, чтобы VS2008 использовал более 25% ресурсов моего процессора.(Я недостаточно серьезно использовал VS2010, чтобы знать, какие сценарии лучше, хотя я знаю, что по крайней мере некоторые из них лучше.)

Другие советы

MSBuild поддерживает параллельное построение проектов.Visual Studio 2008 использует преимущества нескольких процессоров для компилировать проекты.

Как отмечали другие пользователи, MSVS 2010 действительно использует несколько процессов для компиляции.Хотя это не приводит автоматически к значительному сокращению времени компиляции.Я только что провел тест с проектом на C ++ среднего размера (около 200 файлов).Он был построен быстрее на двухъядерном процессоре с частотой 3,4 ГГц, чем на четырехъядерном процессоре с частотой 2,8 ГГц.Хотя двухъядерный процессор дешевле.(Системы практически идентичны с оперативной памятью DDR2 объемом 4 ГБ каждая).Я должен также отметить, что во время компиляции двухъядерный процессор был загружен максимум на 70%.Как вы можете видеть, если VS2010 не может полностью загрузить даже 2 ядра, какой смысл иметь 4 или более?

Забудьте о процессоре.Самый большой прирост производительности, который вы можете дать своему компьютеру, - это твердотельный накопитель.Компиляция и фоновые процессы, такие как Resharper и Intellisense, настолько интенсивны в области ввода-вывода, что основным узким местом visual Studio является ввод-вывод.Я никогда не видел, чтобы VS максимально загружал процессор, независимо от того, было ли у меня одно-, двухъядерное или 8 ядер, как сейчас.

Обновить Спасибо за ваш комментарий @Erx...Я не эксперт в отношении точных процессов, которые происходят.Однако, если вы подумаете о том, сколько операций чтения выполняет компилятор только для компиляции проекта, вы не будете удивлены результатом ввода-вывода.Visual Studio может хранить файлы в памяти, но заметили ли вы, что когда вы создаете проект и у вас есть несохраненные изменения, файлы сохраняются первыми перед началом сборки?Это говорит мне о том, что компилятор msbuild обращается к сохраненным файлам и что он не использует файлы в памяти.Если вы закрыли файл в VS, нет никакой гарантии, что файл все еще находится в памяти, поскольку он мог быть очищен управлением памятью VS.Таким образом, имеет смысл, что компилятор получает чистую копию.Это может быть много сотен или тысяч файлов.Затем происходит запись скомпилированных выходных данных, чтение пакета NuGet, скрипты ConfigGen (http://configgen.codeplex.com/).Вы получаете картину.

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

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

Кроме того, ознакомьтесь с комментарием Скотта Гатри по этому вопросу http://weblogs.asp.net/scottgu/archive/2007/11/01/tip-trick-hard-drive-speed-and-visual-studio-performance.aspx В частности, я цитирую:"... при необходимости откажитесь от покупки дополнительной скорости процессора в пользу инвестирования в более быстрый диск".Если кто-то должен знать, вы ожидаете, что это будет известно руководителю команды разработчиков Visual Studio.

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

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

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

Цитата из статьи, касающейся параллельных сборок на VS2012:

Visual Studio 2010 включила опцию для "максимального количества параллельных проект строится ". Хотя не было никаких указаний на какие-либо ограничения, этот параметр IDE работал только для проектов на C ++.К счастью, это ограничение больше не применяется к Visual Studio 11.Скорее, сейчас есть полная поддержка параллельных сборок и на других языках.Чтобы просмотреть это, запустите копию Process Explorer одновременно с созданием решения с многочисленными проектами.Вы увидите, что создано несколько экземпляров MSBuild - столько, сколько указано в "максимальном количестве параллельных сборок проекта".

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top