Se si è preoccupati per le prestazioni, eseguire un profiler. Quindi cambia codice. È probabile che in un milione di anni non riuscirai mai a indovinare al 100% correttamente dove sta andando il momento. Potresti cambiare il timing dello 0,02% e lasciare il metodo che contribuisce al 62% del carico. Potresti anche peggiorare la situazione. Senza un profiler e prove, sei cieco.
Non può assumere che il JIT sarà inline un getter proprietà. Ci sono molte ragioni per cui può o non può farlo; dimensione del corpo del metodo, virtuale, valore vs tipo di riferimento, architettura, debugger, ecc
"sollevamento" ha ancora un posto, e può ancora ottenere risparmi se il codice viene chiamato ripetutamente in un ciclo stretto; per esempio:
var count = list.Count;
for(int i = 0 ; i < count ; i++) {...}
(dimentichiamo la for
vs foreach
dibattito fr quanto sopra - si tratta di una discussione ortogonale). In quanto sopra, il "paranco" aiuterà le prestazioni. Ma solo per essere davvero confondere - con gli array, è il contrario, ed è più efficiente per non paranco è:
for(int i = 0 ; i < arr.Length ; i++) {...}
Il JIT riconosce e rimuove il controllo limiti (come array sono fissati dimensione).
fonte
2009-03-16 14:38:37
Non sapevo di quello ultimo! Bello sapere, grazie! – Groo
Grazie per le informazioni, ma sto chiedendo un buon riferimento per queste informazioni –
Il mio punto è che * nessun * riferimento ti aiuterà veramente con questo. A ** profiler ** lo farà. –