Какой самый быстрый компоновщик C ++ для платформы Windows? - PullRequest
5 голосов
/ 19 августа 2010

Очевидно, что скорость компоновщика C ++ в Visual Studio 2010 не так сильно улучшилась (в нашем случае - около 25%). Это означает, что мы все еще застряли со временем соединения между 30 секундами и двумя минутами. Конечно, есть линкеры, которые работают лучше? У кого-нибудь есть опыт перехода на другой компоновщик или даже полный набор инструментов и наблюдения, как резко сокращается время компоновки?

Приветствия

Sebastiaan

Ответы [ 6 ]

8 голосов
/ 19 августа 2010

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

Я предпочел бы иметь относительно медленное время соединения, чем потенциально нестабильное программное обеспечение.

А вы, ребята, сейчас испорчены.В свое время мы должны были отправить наши карточки с 80 столбцами в компьютерный центр, и, если бы нам повезло 1006 *, оператор набрал их к следующему четвергу, и мы могли бы начать отладку из вывода на бумажном носителе:-)

5 голосов
/ 19 августа 2010

Когда мы проверили скорость компоновщика, мы определили скорость диска как наиболее ограничивающий фактор. Объем файлового трафика огромен, особенно из-за отладочной информации (просто проверьте размер pdb).

Для нас решение было:

  • устанавливает безумные объемы оперативной памяти, чтобы можно было кэшировать большой объем файлового трафика (4 ГБ или даже больше, если вы работаете в 64-битной ОС). Примечание: вам может потребоваться изменить некоторые системные настройки, чтобы система могла выделить больше памяти для кэша
  • использовать очень быстрый жесткий диск (подключение нескольких из них, поскольку RAID может помочь даже больше)

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

В качестве первого шага я бы предложил запустить Process Explorer (или даже диспетчер задач) и проверить нагрузку на процессор и трафик ввода-вывода во время фазы соединения, чтобы вы могли убедиться, что у вас ограничен процессор или я / O ограничено.

4 голосов
/ 19 августа 2010

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

Однако есть способы улучшить время ссылки. Какие варианты у вас включены? Такие вещи, как «Включить инкрементное связывание» и «Включить связывание на уровне функций», могут существенно повлиять на производительность компоновки (ну, очевидно, при первом подключении это будет «полная» ссылка, но последующие ссылки могут быть сделаны намного быстрее с эти настройки).

2 голосов
/ 30 августа 2010

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

Используйте современные диски SSD. У меня 2 диска 60 ГБ OCZ Vertex2 E в виде RAID 0, и IO больше не является проблемой. SSD теперь достаточно хороши для ежедневного использования даже для тяжелых записей.

И получите несколько гигабайт памяти. Больше не вижу причин работать с объемом оперативной памяти менее 8 ГБ.

1 голос
/ 06 марта 2012

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

1 голос
/ 19 августа 2010

Проверьте сборки "Unity".Это значительно улучшает время соединения:

Преимущества / недостатки построения единства?

...