Подтвердить что ты не робот

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

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

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

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

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

Спасибо.

4b9b3361

Ответ 1

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

Ответ 2

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

Ответ 3

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

Ответ 4

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

Обновление Спасибо за ваш комментарий @Erx... Я не эксперт в отношении точных процессов, которые происходят. Однако, если вы думаете о том, сколько чтений компилятор делает только для компиляции проекта, вы не будете удивлены ударом IO. 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 узнает.

Ответ 6

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

Ответ 7

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

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

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

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