Подтвердить что ты не робот

Влияние эффективности неиспользуемых "использования" директив в С#

Просто интересно.

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

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.IO;
//using blah.. blah.. blah..;

public class myClass
{
    // Class members
}
  • Оказывает ли это плохое влияние на мое приложение использование памяти?

  • Это плохо влияет на мое приложение производительность?

Я знаю, что это хорошая практика, чтобы удалить их, и у нас есть короткая полная поддержка .Net IDE, чтобы сделать это, но мне просто интересно узнать об этом.

4b9b3361

Ответ 1

Экстра Using директивы не будут иметь влияния на память/производительность для конечного приложения - это ничего, кроме компиляторов, которые содержат ярлыки для обработки имен длинного типа. Компилятор использует эти пространства имен для разрешения неквалифицированных (или частично квалифицированных) имен типов для исправления типов.

Ответ 2

Как раз для полноты, IL генерировал для этого:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Hello World!");
        }
    }
}

и это:

class Program
{
    static void Main(string[] args)
    {
        System.Console.Write("Hello World!");
    }
}

точно такие же:

.method private hidebysig static void  Main(string[] args) cil managed
{
  .entrypoint
  // Code size       13 (0xd)
  .maxstack  8
  IL_0000:  nop
  IL_0001:  ldstr      "Hello World!"
  IL_0006:  call       void [mscorlib]System.Console::Write(string)
  IL_000b:  nop
  IL_000c:  ret
} // end of method Program::Main

Ответ 3

В вашей заявке нет производительности. Это просто ярлык, который вы используете, чтобы не набирать всю квалификацию. например.

var f = new File()

вместо

var f= new System.IO.File();

ОДНАКО. это влияет на производительность вашей среды разработки (IDE) несколько, потому что чем больше использования утверждений вы используете, тем больше увеличивается кеш автозаполнения. Это делает время поиска немного медленнее. Но это обычно едва заметно.

Этот совет не применяется к добавлению ссылок на сборки для вашего проекта. Если вы добавите ссылку на MyGloriousLibrary.DLL и никогда не используете ее, у вас будет плохое время.

Ответ 4

Это не влияет на общую производительность или использование памяти вашего приложения. Директивы using находятся только во время компиляции, так что вам не нужно каждый раз выписывать полное имя класса. После компиляции кода ничего не осталось от этих директив (скомпилированный код всегда использует полные имена типов).