Как влияет на производительность неиспользуемая директива using?
Visual Studio автоматически создает операторы using для вас при создании новой страницы или проекта. Некоторые из них вы никогда не будете использовать.
Visual Studio имеет полезную функцию "удалить неиспользуемые использования".
интересно, есть ли какое-либо негативное влияние на производительность программы, если операторы using, к которым никогда не обращаются, остаются упомянутыми в верхней части файла.
6 ответов:
неиспользуемое использование не влияет на производительность выполнения вашего приложения.
Это может повлиять на производительность IDE и общую фазу компиляции. Причина заключается в том, что он создает дополнительное пространство имен, в котором должно происходить разрешение имен. Однако они, как правило, незначительны и не оказывают заметного влияния на ваш опыт IDE для большинства сценариев.
Это также может повлиять на производительность вычисления выражений в отладчике для по тем же причинам.
нет, это просто время компиляции/стиль кодирования вещь. Двоичные файлы .NET используют полные имена под капотом.
не влияет на скорость выполнения, но может быть некоторое небольшое влияние на скорость компиляции/intellisense, поскольку существует больше потенциальных пространств имен для поиска нужного класса. Я бы не стал слишком беспокоиться об этом, но вы можете использовать пункт меню Organize Usings для удаления и сортировки операторов using.
нет, есть несколько процессов, участвующих при составлении программы. Когда компилятор начнет искать ссылки (классы, методы), он будет использовать только те, которые используются в коде. Директива using только указывает компилятору, где искать. Многие неиспользуемые инструкции using могут иметь проблемы с производительностью, но только во время компиляции. Во время выполнения весь внешний код правильно связан или включен как часть двоичного файла.
следующей ссылке хорошее чтение о том, почему удалить неиспользуемые ссылки объясняет, как полезно удалить неиспользуемые ссылки из приложения.
Ниже приведены некоторые выдержки из ссылки:
, удалив все неиспользуемые ссылки в вашем приложении, вы предотвращение
CLR
загрузить неиспользуемые ссылки на модули во время выполнения. Это означает, что вы сократите время запуска вашего приложение, потому что это занимает время чтобы загрузить каждый модуль и избежать когда компилятор загружает метаданные, которые никогда не будут использоваться. Вы можете найдите, что в зависимости от размера каждой библиотеки, ваше время запуска заметно сокращается. Это не означает, что ваше приложение будет будьте быстрее после загрузки, но это может быть очень удобно, чтобы знать, что ваш время запуска может быть сокращено.еще одно преимущество удаления любых неиспользуемых ссылок заключается в том, что вы будете уменьшите риск конфликтов с пространствами имен. Например, Если вы есть оба
System.Drawing
иSystem.Web.UI.WebControls
ссылка, вы можете обнаружить, что вы получаете конфликты при попытке ссылаться наImage
класса. Если у вас есть директивы using в класс что матч эти ссылки компилятор не может сказать, какие из них использовать. Если вы регулярно используете автозаполнение при разработке, удалите неиспользуемые пространства имен уменьшат количество значений автозаполнения в вашем текстовый редактор по мере ввода.