2010-02-18 2 views
19

Trovo che la parola chiave var aiuti notevolmente a ridurre il rumore nel mio codice C#, con poca perdita di leggibilità; Direi che ora uso la digitazione esplicita solo quando il compilatore mi obbliga a farlo.Quanto impatto ha l'uso di "var" sulle prestazioni del compilatore C#?

So che using var does not change the runtime characteristics of my code. Ma la domanda mi è appena venuta in mente: sto pagando una grossa penale al momento della compilazione per tutto il lavoro extra che il compilatore sta facendo ora per me?

Qualcuno ha fatto dei benchmark per vedere quanta differenza l'uso estensivo di var fa a tempi di compilazione?

+0

la risposta è - nessuno. –

+1

Hai qualche prova o ragionamento per quella risposta? –

+1

Ho votato erroneamente per la chiusura (ma non posso riprendere il mio voto). L'altra domanda è in qualche modo correlata, ma non esatta. –

risposta

20

Il mio consiglio: provalo in entrambe le direzioni. Misura i risultati. Allora lo saprai.

Non ho eseguito alcun benchmark e, anche se l'avessi fatto, non risponderebbe alla domanda per te. Non sappiamo che hardware hai, cos'altro funziona sulla tua macchina, come si presenta un programma tipico. Né sappiamo quello che consideri prestazioni accettabili o inaccettabili. Sei l'unico a sapere tutto questo, quindi sei l'unico a poter rispondere a questa domanda.

+3

@didibus: ti incoraggio a pubblicare una risposta che ti piace di più. –

+1

In retrospettiva, vedo che ero un po 'fuori dal mondo. Spero solo che l'OP tenga questa domanda senza risposta in modo che forse alla fine qualcuno che ha dati di riferimento reali o ragionamenti sulle implicazioni di performance sul compilatore verrebbero a condividerli qui. O se l'OP in realtà ha seguito questa risposta, e ha eseguito i propri benchmark, se poteva condividere i risultati qui. –

16

I tipi devono essere controllati comunque, questo può anche far risparmiare tempo ... ok, improbabile :)
Non ti importa se - se il tuo ambiente di sviluppo è lento, acquista più memoria o un nuovo computer. Non cambiare il modo in cui scrivi il codice.

+0

+1 ... e la compilazione di C# è velocissima se paragoni ad altri linguaggi come C o C++ –

+0

Apprezzo il punto: non ho intenzione di cambiare la mia pratica di programmazione a causa di questo - ma vorrei alcuni dettagli sulla differenza che fa. –

+0

Ti rendi conto di quante cose il compilatore fa per te? 'var' è solo un altro piccolo compito ... – Kobi

3

La risposta corretta è "nulla misurabile". Per un parziale (ancora lunga) lista dei passi il compilatore C# fa durante la compilazione, guarda qui:

http://blogs.msdn.com/ericlippert/archive/2010/02/04/how-many-passes.aspx

poi capire che il tipo di inferenza è solo una parte di un singolo passaggio in tale elenco.

+0

Tuttavia, la lunghezza dell'elenco non dice nulla sui pesi temporali relativi di ciascun articolo. – Joey

1

Il tipo di lato destro deve comunque essere trovato per eseguire il controllo del tipo e/o la conversione del tipo. Assegnare il risultato al tipo della variabile è economico. La maggior parte del costo (se presente) sarà in ciò che è stato necessario fare per consentire di valutare l'espressione prima che tutte le variabili locali siano state dichiarate, ma si paga per questo anche se non si utilizza var. (A proposito, è possibile o addirittura probabile che il vincolo di cui sopra non danneggi affatto le prestazioni.)