2010-11-12 17 views
22

Posso già sapere la risposta a questa domanda, ma ho pensato che valesse la pena chiedere comunque. Se ho un carico di istruzioni using nel mio file di codice che non è in uso;Inutilizzato usando le dichiarazioni

  1. Questo ha qualche impatto negativo sulle prestazioni?
  2. Come fa il compilatore ad occuparsene in fase di compilazione/esecuzione?

Grazie

+4

Stai parlando di utilizzare ** direttive ** o utilizzare ** istruzioni **? – icecrime

+0

Intendi prestazioni di runtime o prestazioni del compilatore? Il compilatore non li tratta in fase di runtime, per definizione. – Simone

+0

Duplicato di http://stackoverflow.com/questions/136278/why-should-you-remove-unnecessary-c-using-directives? – JLWarlow

risposta

19

fa quel avere alcun tipo di impatto sulle prestazioni dannoso?

No.

Come funziona l'affare compilatore con loro in fase di compilazione/tempo di esecuzione?

In fase di compilazione, fanno ciò che ci si aspetterebbe, ovvero agiscono come importazioni di spazio dei nomi. Non compaiono nel binario compilato: ogni riferimento a un tipo utilizza il nome completo.

Il compilatore controlla lo spazio dei nomi in un'istruzione using anche se non è necessaria; se si rimuove uno spazio dei nomi, tutte le istruzioni using che si riferiscono ad essa falliranno.

Per me, le dichiarazioni ridondanti using sono come commenti ridondanti. Non fanno alcuna differenza per il compilatore, ma ne includono troppi e rischi di confondere i tuoi sviluppatori.

+0

Grazie ... come mi aspettavo. –

1

Non ci sono risultati in termini di prestazioni in fase di esecuzione, gli impieghi vengono risolti in fase di compilazione e quelli inutili vengono ignorati.

0

può rendere il tempo di compilazione più lungo, ma avrà o no o un effetto trascurabile sulle prestazioni in fase di esecuzione.

8

Non influisce sulle prestazioni al runtime su tutti.

Sarà probabilmente aumenterà a tempo di compilazione leggermente dal:

1) Il compilatore ha bisogno di analizzare un paio di caratteri
2) Si deve guardare in alto identificatori tra più candidati. Ma dal momento che questo probabilmente usa gli hashtables, non dovrebbe nemmeno essere costoso.

Direi che il rallentamento del compilatore è trascurabile.

Direi che rallenta Intellisense un po 'di più poiché l'elenco che deve visualizzare e il filtro diventa un po' più lungo.

La rimozione degli utilizzi inutilizzati è più un aspetto stilistico che un miglioramento delle prestazioni. E devi stare attento ai metodi di estensione dal momento che sono portati in ambito usando le istruzioni.Ad esempio non rimuovo using System.Linq anche quando non è attualmente utilizzato.

+0

Non esattamente correlati, ma potresti spiegarci di più perché non vuoi rimuovere 'using System.Linq'? Non sto seguendo esattamente. – Roman

+0

@Roman Perché mi piace avere i metodi LINQ mostrati in Intellisense. – CodesInChaos

+0

Sì, probabilmente l'infrastruttura Intellisense è l'unica che potrebbe parlare di prestazioni con utilizzi non utilizzati. – Steve

1

Nessun impatto sulle prestazioni in fase di esecuzione. Tuttavia, molti spazi dei nomi possono in qualche modo rallentare il completamento del codice e diminuire la produttività

Problemi correlati