Неиспользуемые операторы
Возможно, я уже знаю ответ на этот вопрос, но я думал, что все равно стоит его спрашивать. Если у меня есть загрузка операторов using
в моем файле кода, которые не используются;
- Это оказывает какое-то негативное влияние на производительность?
- Как компилятор справляется с ними при компиляции/времени выполнения?
Спасибо
Ответы
Ответ 1
имеет ли это какое-либо негативное влияние на производительность?
Нет.
Как компилятор справляется с ними при компиляции/времени выполнения?
Во время компиляции они делают то, что вы ожидаете, т.е. действуют как импорт пространства имен. Они не отображаются в скомпилированном двоичном файле: любая ссылка на тип использует полностью квалифицированное имя.
Компилятор проверяет пространство имен в выражении using
, даже если оно не требуется; если вы удалите пространство имен, то все операторы using
, которые ссылаются на нее, не будут выполнены.
Для меня избыточные выражения using
напоминают избыточные комментарии. Они не имеют никакого значения для компилятора, но включают слишком много из них, и вы рискуете запутать своих разработчиков.
Ответ 2
Это не влияет на производительность в во время выполнения.
Вероятно, это значительно увеличит время компиляции, поскольку:
1) Компилятору нужно разобрать еще несколько символов
2) Он должен искать идентификаторы среди большего числа кандидатов. Но так как это, вероятно, использует hashtables, это тоже не должно быть дорого.
Я бы предположил, что замедление компилятора незначительно.
Я бы предположил, что это замедляет Intellisense немного больше, потому что список, который он должен отображать, и фильтр становится довольно длинным.
Удаление неиспользуемых приложений более стилистично, чем улучшение производительности. И вам нужно быть осторожными в методах расширения, поскольку они вводятся в область видимости с помощью операторов. Например, я не удаляю using System.Linq
, даже если он в настоящее время не используется.
Ответ 3
В процессе исполнения нет производительности, использование разрешено во время компиляции, а бесполезные игнорируются.
Ответ 4
Отсутствие влияния производительности во время выполнения. Тем не менее, многие пространства имен могут несколько замедлить выполнение кода и снизить производительность
Ответ 5
Это не имеет никакого отношения - см. ответ на этот вопрос:
Как влияет производительность на неиспользуемую директиву использования?
Ответ 6
Это может сделать время компиляции более длинным, но оно будет иметь либо незначительный, либо незначительный эффект во время выполнения.