Увеличивает ли огромное количество предупреждений время компиляции С# дольше?

У нас есть большое решение с тысячами предупреждений. Не потребуется ли компилировать решение, если я удалю все предупреждения (вручную или с помощью инструмента)?

Я попытался понизить уровень детализации до молчания, бесполезно. Максимальный уровень детализации не имеет значения.

Ответ 1

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

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

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


Обновление: Экспериментальные результаты.

Наша кодовая база имеет ок. 340 тысяч строк кода С#, разделенных на 48 проектов в одном решении. Перекомпиляция дает 460 предупреждений. Выход компилятора составляет 2800 строк и занимает около 400 кБ при перенаправлении в файл.

Скорость компиляции на Core i7 920, 9 ГБ оперативной памяти, один диск с частотой 7,2 кбит/с:

  • 47 секунд при выводе в окно консоли,
  • 43 секунды при перенаправлении в файл - это сокращение времени сборки на 9,1%.

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

Ответ 2

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

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

Ответ 3

Заблокирование предупреждений не влияет на время компиляции. Молчание влияет на сообщения о предупреждениях, а не на то, компилятор проверяет все правила или генерирует ошибки/предупреждения.

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