Как влияет на производительность директива use notused? - PullRequest
94 голосов
/ 22 июля 2009

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

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

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

Ответы [ 6 ]

115 голосов
/ 22 июля 2009

Неиспользованное использование не влияет на производительность приложения во время выполнения.

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

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

13 голосов
/ 22 июля 2009

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

8 голосов
/ 11 мая 2017

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

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

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

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

7 голосов
/ 22 июля 2009

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

4 голосов
/ 22 июля 2009

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

4 голосов
/ 22 июля 2009

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

...