C'è qualche differenza riguardo alle prestazioni dei metodi privati, protetti, pubblici e interni nelle classi C #?

StackOverflow https://stackoverflow.com/questions/7384987

Domanda

C'è qualche differenza riguardo alle prestazioni dei metodi private, protected, public e internal nella classe C #?Mi interessa se si consuma più tempo del processore o RAM.

È stato utile?

Soluzione

Non sono Aware di qualsiasi differenza di prestazione per la normale invocazione; È possibile che l'accesso più limitato prenderà un po 'più di lavoro quando si accede tramite l'invocazione o la riflessione dinamica come il chiamante potrebbe dover essere convalidato più attentamente. Nella normale custodia compilata JIT, l'accesso può essere convalidato da CLR proprio una volta per scontato. Immagino sia possibile che la compilazione JIT (e la verifica) stessa potesse essere leggermente più lenta per un accesso più restrittivo - ma trovo difficile credere che sarebbe significativo.

Questo dovrebbe assolutamente non essere un fattore nel determinare quale accessibilità da utilizzare, anche se in qualche modo c'è qualche piccola differenza di performance di cui non sono a conoscenza. Se ritieni che tu possa essere in grado di ottenere un vantaggio performance rendendo l'accessibilità a qualcosa di diverso dal "naturale" per il tuo design, dovresti assolutamente il benchmark prima / dopo il caso - I sospetto che sarai difficile da trovare Situazione del mondo reale in cui la differenza è misurabile in modo affidabile.

Lo stesso tipo di consulenza va per tutti i tipi di micro-ottimizzazione: non è quasi mai una buona idea comunque, e dovrebbe sicuramente essere eseguita solo nell'attenta misurazione.

Altri suggerimenti

Non ci sarà alcuna differenza misurabile nelle prestazioni tra metodi privati, protetti o pubblici.

Se ti concentri sull'ottimizzazione, forse dovresti provare a rendere il tuo codice di collo di bottiglia più "procedurale" che orientato agli oggetti.Farebbe un piccolo miglioramento.

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