Domanda

Quanto è il costo per la mia prestazione programmi se aggiungo i metodi di estensione ad esso?
Funzionerà più lento o può essere caricherà più lento?
Grazie.

È stato utile?

Soluzione

  

Quanto costerà per i miei programmi   prestazioni Se aggiungo metodi di estensione   ad esso? Funzionerà più lento o può essere   caricherà più lento?

Non ci sarà nessun calo di prestazioni. metodi di estensione sono metodi molto statici.

Altri suggerimenti

Un metodo di estensione è zucchero sintattico applicato a un metodo statico.

In teoria, un metodo statico è più veloce di un metodo di istanza non virtuale (non c'è bisogno di controllare per nulla this), che a sua volta è più veloce di un metodo di istanza virtuale (senza bisogno di guardare l'attuazione a chiamata).

In teoria anche, ottimizzazioni potrebbe sbarazzarsi di queste differenze. E 'anche sopravvalutato in termini di statica quando si tratta di metodi di estensione, dal momento che l'oggetto è destinata probabilmente ad essere trattata in modo tale a come richiede un null-check (esplicita o implicita per i modi in cui è l'uso) in ogni caso.

In pratica, è probabile che qualunque sia il metodo di estensione non avrà molto, molto di più di un impatto che si tratti di estensione o istanza.

I rapidamente le prestazioni testato questo utilizzando alcuni metodi di estensione interi in un ciclo molto lungo esecuzione e trovato che nei casi ho provato, la prestazione è stata generalmente identiche. Quando il debug o l'esecuzione di assemblee non ottimizzate, i metodi di estensione correvano circa due volte più lentamente, come i miei casi di controllo, questo ha un senso perché il debugger non può in linea di questi metodi e deve tenere traccia del callstack, ecc.

Quindi, in un insieme di elementi pronti per il rilascio, senza penalizzare le prestazioni.

E sicuramente vi viene caricata più lento, come il caricamento di un programma non dipende dalle percorsi di esecuzione del programma.

Come per l'esecuzione più lentamente? Solo misurando il tempo necessario per il metodo di estensione e il metodo non estensione mostrerà certezza. Ho il sospetto che la differenza non sarà significativo anche se in realtà è misurabile.

La considerazione importante deve essere sempre "fa il metodo di estensione fare il mio codice più chiaro e più facile da capire e mantenere".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top