Як на ефективність впливає невикористана директива використання?


110

Visual Studio автоматично створюватиме, використовуючи для вас оператори, коли ви створюєте нову сторінку або проект. Деякі з них ви ніколи не будете використовувати.

Visual Studio має корисну функцію для "видалення невикористаних пристосувань".

Цікаво, чи є якийсь негативний вплив на продуктивність програми, якщо використовувані оператори, до яких ніколи не звертаються, залишаються згаданими у верхній частині файлу.


Я шукав його, перш ніж запитувати, і він не з’явився.
KdgDev

6
FWIW, ця публікація має кращий SEO: для мене це був перший результат в Google. З двох пов’язаних оригіналів один недоступний (видалений), а другий сформульований достатньо інакше, щоб додати деякої цінності цій публікації, навіть якщо лише як перенаправлення.
DaveD

@DaveD спочатку для вас, оскільки Google знає ваші точні налаштування та історію пошуку. У мого друга комп'ютер був не першим.
ilias iliadis

Відповіді:


133

Невикористане використання не впливає на продуктивність роботи вашої програми.

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

Це також може вплинути на продуктивність оцінки виразів у відладчику з тих же причин.


38
Чим більше буде
улюблень

14

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


3
Чи означає це, що більш тривалі назви класів та методів мають невеликий, але фактичний (якщо незмірний) вплив на час збирання JIT?
Джаред Updike

8

Не впливає на швидкість виконання, але може бути незначний вплив на швидкість компіляції / intellisense, оскільки існує більше потенційних просторів імен для пошуку відповідного класу. Я б не надто хвилювався з цього приводу, але ви можете скористатись пунктом меню «Організувати звички», щоб видалити та сортувати використовувані оператори.


8

Наступне посилання Хороше прочитання про те, чому видалити невикористані посилання, пояснює, як корисно видалити невикористані посилання з програми.

Нижче наведено кілька уривків із посилання:

  1. Видаляючи будь-які невикористані посилання у вашій програмі, ви запобігаєте CLRзавантаженню невикористаних посиланих модулів під час виконання. Це означає, що ви скоротите час запуску вашої програми, оскільки це потребує часу для завантаження кожного модуля і уникає наявності метаданих завантажувача компілятора, які ніколи не будуть використовуватися. Ви можете виявити, що залежно від розміру кожної бібліотеки, час запуску помітно скорочується. Це не означає, що ваш додаток буде швидше завантажений, але може бути досить зручно знати, що час запуску може скоротитися.

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


5

Ні, при складанні програми бере участь кілька процесів. Коли компілятор почне шукати посилання (класи, методи), він буде використовувати лише ті, які використовуються в коді. Директива використання лише вказує компілятору, де його шукати. Багато невикористаного використання оператора, можливо, може мати проблему з продуктивністю, але саме під час компіляції. Під час виконання весь зовнішній код належним чином пов’язаний або включений як частина двійкового.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.