2013-03-13 12 views
5

W języku C# po dodaniu using directive dla obszaru nazw, daje on dostęp do wszystkich typów w tym określonym obszarze nazw. Jeśli jednak przestrzeń nazw ma wiele typów i potrzebuję tylko jednej konkretnej, często używam w pełni kwalifikowanej nazwy, myśląc, że nie chcę udostępniać żadnych niepotrzebnych zajęć, o których wiem, że nie zamierzam ich używać (szczególnie jeśli jest ich dużo w tej przestrzeni nazw) ze względów wydajnościowych. Myślałem, że musi mieć jakiś wpływ na wydajność (bez względu na to, jak mało), aby je udostępnić, w przeciwieństwie do nie, ale ile? (jeśli tak naprawdę jest). A jeśli tak, czy byłoby to złym zwyczajem robić to wszędzie, ponieważ czy nie zacząłby się akumulować w coś, co byłoby zauważalne (wydajność)?W języku C#, czy bardziej wydajne jest używanie w pełni kwalifikowanych nazw w porównaniu z dyrektywą "używanie"?

Widziałem other SO post o użyciu dyrektywy using w pełni kwalifikowanych nazw, ale nie było to odniesienie do wydajności.

+2

Dodanie dyrektyw używania nie wpłynie na wydajność w czasie wykonywania. Zobacz http://stackoverflow.com/questions/14580606/performance-impact-of-unused-using-directives-in-c-sharp – Sam

+0

Nie jestem pewien, może to tylko kwestia składni cukru? –

Odpowiedz

16

Dyrektywa using to cukier syntaktyczny, który znika podczas kompilacji. To, czy przestrzeń nazw została wpisana przez using, czy też wymieniona w w pełni kwalifikowanej nazwie typu, jest całkowicie nieistotne w wynikowym kodzie. W związku z tym nie ma żadnych korzyści związanych z wydajnością w środowisku wykonawczym za pomocą jednego lub drugiego.

7

Nie ma różnicy.

To potęga mają nieistotny (czyli prawdopodobnie nie mierzalne) oddziaływanie/korzyści na wydajność kompilatora (jak w przypadku prowadzenia msbuild), ale w czasie wykonywania IL wyraźnie wie, typ, który jest przeznaczony, jak to pieczone w kodzie jako uchwyt typu. Nie ma "szukania" typów, dopóki nie zostanie zastosowane odbicie.

+2

Drobna terminologia, ale powiedziałbym, że "wyraźnie" zna typ, który jest przeznaczony ... –

+0

tak, dobry punkt –

3

Muszę powiedzieć, NIE. Kompilator wygeneruje ten sam kod IL, więc nie musisz się tym martwić.

0

to po prostu zależy.

Korzystanie z dyrektywy using pomaga szybciej napisać kod. Ale jeśli masz np. 2 przestrzenie nazw, w których używasz dyrektywy using, które mają metody o tej samej nazwie, a także mają ten sam podpis, będziesz miał kłopoty.

Korzystanie z pełnych kwalifikowanych referencji może sprawić, że Twój kod będzie bardziej zrozumiały.

+1

proszę również podać powód do zrzutu mojej odpowiedzi :) –