Как на производительность влияет неиспользованная директива?

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

  •  18-09-2019
  •  | 
  •  

Вопрос

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

Visual Studio имеет полезную функцию для «удаления неиспользованных пользователей».

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

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

Решение

Неиспользуемое использование не оказывает влияния на выполнение времени выполнения вашего приложения.

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

Это также может повлиять на эффективность оценки выражений в отладчике по тем же причинам.

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

Нет, это просто стиль компиляции/стиля кодирования. .NET двоичные файлы используют полностью квалифицированные имена под капюшоном.

Следующая ссылка Хорошее чтение, зачем удалить неиспользованные ссылки объясняет, как было бы полезно удалить неиспользованные ссылки из приложения.

Ниже приведены некоторые выдержки по ссылке:

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

  2. Еще одним преимуществом удаления любых неиспользованных ссылок является то, что вы снизите риск конфликтов с пространствами имен. Например, если у вас есть оба System.Drawing а также System.Web.UI.WebControls Ссылка, вы можете обнаружить, что вы получаете конфликты при попытке ссылаться на Image учебный класс. Если у вас есть директивы в вашем классе, которые соответствуют этим ссылкам, компилятор не может сказать, какие из тех использовать. Если вы регулярно используете автозаполнение при разработке, удаление неиспользованных пространств имен уменьшит количество значений автозаполнения в вашем текстовом редакторе при печати.

Никакого влияния на скорость выполнения, но может быть небольшое влияние на скорость/интеллектуальность компиляции, поскольку существует больше потенциальных пространств имен для поиска правильного класса. Я бы не стал слишком беспокоиться об этом, но вы можете использовать элемент меню «Организации Usings» для удаления и сортировки использования операторов.

Код, который не выполняется, не влияет на производительность программы.

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

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