2012-01-26 12 views
8

Ho un'applicazione C# 4.0 e all'interno di questa applicazione ho molte variabili inutili. Come _foo variabile all'interno il codice qui sotto:Molte variabili inutili potrebbero causare problemi di prestazioni in C#?

public string Foo() { 
    var _foo = "foo bar"; 
    return _foo; 
} 

Come ho già detto, situazioni come questa si verificano all'interno di un sacco di metodi.

Molte variabili inutili (come quelle che ho spiegato in questo caso) causano problemi di prestazioni in C#?

Edit:

io non chiedo qualche consiglio se devo rimuoverli o meno. La mia domanda riguarda l'effetto delle prestazioni. In effetti, l'app non è stata scritta da me e io sono nuovo di questo progetto. Ho appena visto e mi chiedo se ha qualche perf. effetto oltre al fatto che ha un effetto sulla qualità del codice.

+0

ciò che è un sacco per voi? 100 o 1.000.000? e se questi non sono necessari cosa ti impedisce di rimuoverli? che tipo di applicazione è tua? –

+0

Se sai che non sono necessari, rimuovili. –

+4

Quelle variabili inutilizzate sicuramente perderebbero i cicli cerebrali dello sviluppatore di manutenzione – chandmk

risposta

25

Molte variabili inutili (come quelle spiegate in questo caso ) causano problemi di prestazioni in C#?

No, non lo faranno.

Il compilatore è abbastanza intelligente per rimuovere tutte le cose inutili quando si compila in modalità di rilascio e ottimizzare il codice per:

public string Foo() 
{ 
    return "foo bar"; 
} 

o più precisamente a:

.method public hidebysig instance string Foo() cil managed 
{ 
    .maxstack 1 
    .locals init (
     [0] string str) 
    L_0000: ldstr "foo bar" 
    L_0005: stloc.0 
    L_0006: ldloc.0 
    L_0007: ret 
} 

che rispetto al la sua controparte in modalità Debug è abbastanza diversa:

.method public hidebysig instance string Foo() cil managed 
{ 
    .maxstack 1 
    .locals init (
     [0] string _foo, 
     [1] string CS$1$0000) 
    L_0000: nop 
    L_0001: ldstr "foo bar" 
    L_0006: stloc.0 
    L_0007: ldloc.0 
    L_0008: stloc.1 
    L_0009: br.s L_000b 
    L_000b: ldloc.1 
    L_000c: ret 
} 

È decisamente n qualcosa che dovresti preoccuparti dal punto di vista delle prestazioni. Quello di cui dovresti preoccuparti è la leggibilità del tuo codice e questo esempio di codice ottimizzato sembra molto più leggibile della tua versione.

Quindi ci si può fidare del compilatore che è in costante miglioramento ed è in grado di ottimizzare tali situazioni.

+2

+1 per IL pubblicato – ken2k

+0

Grazie, proprio quello di cui avevo bisogno. – tugberk

1

A meno che non si verifichino problemi di prestazioni evidenti con il sistema, non si dovrebbe mai codificare/modificare le prestazioni. Come sviluppatore di software, il nostro primo obiettivo è scrivere un codice pulito, leggibile ed elegante. Come ha detto Darin sopra, i compilatori faranno il loro lavoro di ottimizzazione per l'esecuzione della macchina per nostro conto.

0

Se questa è una variabile non utilizzata, potrebbe causare una riduzione delle prestazioni e aumentare la dimensione dell'assieme poiché occuperanno spazi di memoria in fase di esecuzione.

Per ulteriori letture e riferimento, è possibile controllare:

https://msdn.microsoft.com/en-us/library/ms182278(v=vs.140).aspx

Problemi correlati