Была ли Visual Studio 2008, 2010 или 2012 (v11) написана для использования нескольких ядер? - PullRequest
16 голосов
/ 29 ноября 2009

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

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

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

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

Спасибо.

Ответы [ 7 ]

13 голосов
/ 29 ноября 2009

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

11 голосов
/ 09 мая 2010

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

8 голосов
/ 29 ноября 2009

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

6 голосов
/ 13 января 2012

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

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

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

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

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

2 голосов
/ 18 мая 2010
1 голос
/ 23 июля 2013

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

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

Цитата из статьи о параллельных сборках на VS2012:

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

1 голос
/ 03 января 2011

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

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