Esiste qualche differenza rispetto alle prestazioni dei metodi private
, protected
, public
e internal
in classe C#? Mi interessa se si consumano più tempo del processore o RAM.C'è qualche differenza riguardo alle prestazioni dei metodi privati, protetti, pubblici e interni nelle classi C#?
risposta
Io non sono consapevole di di qualsiasi differenza di prestazioni per invocazione normale; è possibile che un accesso più limitato richieda un po 'più di lavoro quando si accede tramite invocazione dinamica o riflessione, poiché potrebbe essere necessario convalidare il chiamante con maggiore attenzione. Nel normale caso compilato da JIT, l'accesso può essere convalidato dal CLR solo una volta e quindi dato per scontato. Immagino sia possibile che la compilazione JIT (e la verifica IL) stessa possa essere leggermente più lenta per un accesso più restrittivo - ma trovo difficile credere che sarebbe significativa.
Questo dovrebbe non è il essere un fattore nel determinare quale accessibilità da utilizzare, anche se in qualche modo vi è una piccola differenza di prestazioni non sono a conoscenza di. Se ritieni che potresti essere in grado di ottenere un vantaggio prestazionale rendendo l'accessibilità diversa da quella "naturale" per il tuo design, dovresti assolutamente valutare il caso prima/dopo - sospetto che ti sarà difficile trovare un situazione del mondo reale in cui la differenza è misurabile in modo affidabile.
Lo stesso tipo di consiglio vale per tutti i tipi di micro-ottimizzazione: è quasi mai una buona idea in ogni caso, e dovrebbe sicuramente essere effettuata solo all'interno di un'attenta misurazione.
Sono sorpreso che tu non sia stato più inequivocabile. Detto questo, ero in procinto di elaborare "No". – harpo
i metodi privati potrebbero non essere ottimizzati (in linea, ad es.) In modo più aggressivo dal motore JIT? – sehe
@sehe: Perché lo pensi? Anche se un metodo è pubblico, non può cambiare dopo la compilazione JIT ... –
Non ci sarà alcuna differenza misurabile nelle prestazioni tra metodi privati, protetti o pubblici.
Se ti concentri sull'ottimizzazione, probabilmente dovresti provare a rendere il codice del collo di bottiglia più "procedurale" rispetto all'oggetto. Farebbe un piccolo miglioramento.
- 1. Metodi privati su metodi pubblici
- 2. Protezione ingresso di metodi privati / protetti?
- 3. Avere proprietà e metodi privati nelle classi ES6
- 4. Qual'è l'utilità dei costruttori pubblici nelle classi astratte in C#?
- 5. Metodi pubblici extra nelle classi derivate?
- 6. Qualificatori di accesso pubblici, privati e protetti per le classi D
- 7. Quando dovrei usare metodi pubblici/privati / statici?
- 8. Modifica dei metodi privati protetti per i test
- 9. metodi "protetti" in C#?
- 10. Slot pubblici e privati in R?
- 11. Metodi di chiamata C# nelle classi generiche
- 12. Metodi pubblici statici vs metodi pubblici
- 13. Differenza nelle prestazioni lambda?
- 14. respond_to? e metodi protetti
- 15. tomcat7 vs. tomcat6, c'è qualche differenza significativa nelle loro prestazioni?
- 16. Campi protetti da Java vs getter pubblici
- 17. Perché definire membri privati sotto membri pubblici in C++?
- 18. C++ - Funzione di costruzione sovraccarico - privati e pubblici
- 19. Sovrascrittura dei metodi privati in Java
- 20. Errore "Gli elementi definiti in un namespace non possono essere dichiarati esplicitamente come interni privati, protetti o protetti"
- 21. JVM e metodi privati
- 22. Metodi e campi privati
- 23. Membri pubblici e interni in una classe interna?
- 24. Ignora metodi protetti
- 25. Prova i metodi privati e le classi interne con NUnit?
- 26. Scopo dei metodi pubblici NonAction in MVC
- 27. Miscelare metodi privati e pubblici/protetti con lo stesso nome causa la disabilitazione dei multimetodi ed è vietato evitare comportamenti sorprendenti
- 28. Differenza nelle prestazioni in SQL
- 29. Test delle unità e ambito degli oggetti: come testare metodi privati / interni ecc.?
- 30. C#: Perché non possiamo avere metodi interni/funzioni locali?
microptimisation anyone? –
Probabilmente no, ma c'è un miglioramento (memoria, penso) con classi sigillate. –
Che dire dei metodi 'statico privato '(al contrario di non-'statico')? –