2013-03-13 9 views
5

In C#, quando si aggiunge uno using directive per uno spazio dei nomi, è possibile accedere a tutti i tipi in tale spazio dei nomi specifico. Tuttavia, se lo spazio dei nomi ha molti tipi e ne ho solo bisogno uno, uso spesso il nome completo pensando che non voglio rendere disponibili classi inutili che so che non userò (specialmente se ce ne sono molti in quello spazio dei nomi) per motivi di prestazioni. Stavo pensando che ci deve essere un impatto sulle prestazioni (non importa quanto minuti) per renderle disponibili rispetto a no, ma quanto? (se ce ne è effettivamente uno). E se così fosse, sarebbe una cattiva pratica fare tutto questo dappertutto, perché non inizierebbe allora ad accumulare qualcosa di notevole (rendimento saggio)?In C#, è più performante usare nomi completamente qualificati rispetto alla direttiva 'using'?

Ho visto lo other SO post sull'utilizzo della direttiva using rispetto ai nomi completi, ma non faceva riferimento alle prestazioni.

+2

L'aggiunta di direttive non influisce sulle prestazioni di runtime. Vedi http://stackoverflow.com/questions/14580606/performance-impact-of-unused-using-directives-in-c-sharp – Sam

+0

Non sono sicuro, forse è solo una questione di zucchero della sintassi? –

risposta

16

La direttiva using è solo zucchero sintattico che scompare durante la compilazione. Indipendentemente dal fatto che lo spazio dei nomi sia stato incluso tramite using o menzionato in un nome di tipo completo è del tutto irrilevante nel codice byte risultante. Quindi, non vi è alcun vantaggio in termini di prestazioni in fase di esecuzione utilizzando l'uno o l'altro.

7

Non c'è differenza.

E forza hanno un trascurabile (cioè probabilmente non misurabile) impatto/benefici sulle prestazioni del compilatore (come in durante l'esecuzione msbuild), ma in fase di esecuzione l'IL conosce in modo esplicito il tipo che ha lo scopo, come è cotto nel codice come un tipo di maniglia. Non c'è "ricerca" di tipi a meno che non si stia utilizzando la riflessione.

+2

Terminologia minore, ma direi che "esplicitamente" conosce il tipo che è inteso ... –

+0

sì buon punto –

3

Devo dire, NO. Il compilatore produrrà lo stesso codice IL, quindi non devi preoccuparti di questo.

0

che dipende solo.

L'utilizzo della direttiva using consente di scrivere il codice più velocemente. Tuttavia, se si dispone di e.g 2 spazi dei nomi in cui si utilizza la direttiva using che entrambi hanno metodi che hanno lo stesso nome e hanno anche la stessa firma, si avranno problemi.

L'utilizzo del riferimento completo completo può rendere più comprensibile il codice.

+1

per favore anche indicare il motivo per cui abbattere la mia risposta :) –