Leistung der Eigenschaft Get v Method

8

Ich habe eine Klasse mit einer Sammlung von Methoden, und ich frage mich, ob es einen Leistungsbonus gibt, Methoden über Eigenschaften zu verwenden?

Einige der Methoden sind ziemlich komplex, geben aber im Grunde eine IEnumerable-Auflistung von Objekten zurück, während andere eine einfache return values.Where(x => x.property == "comparison") Linq-Abfrage sind.

Beispiele

Methode

%Vor%

Eigenschaft

%Vor%

Wäre es besser, sie als Eigenschaften oder Methoden zu markieren?

    
Tom Halley 04.09.2012, 15:24
quelle

4 Antworten

14

Eigenschaften werden als Methoden unter der Haube implementiert, so dass es absolut keinen Leistungsunterschied gibt. Die Richtlinien zur Auswahl zwischen einer Eigenschaft und einer Methode sind semantisch. p>     

Jon 04.09.2012, 15:26
quelle
3

Eine Eigenschaft ist nur eine oder zwei Methoden mit spezifischen Namen und Metadaten.

Daher ist der Overhead der gleiche wie die Möglichkeiten für JIT-Inlining ..

    
Richard 04.09.2012 15:27
quelle
2

Es gibt an sich keinen Leistungsunterschied, aber ich würde argumentieren, dass Benutzer Ihrer Klasse "einen" erwarten könnten. Das heißt, eine Eigenschaft wie "ActivePens" könnte als "leichter" empfunden werden als eine Methode wie "GetActivePens ()". Ich versuche Methoden zu schreiben, um Werte von teureren Dingen zu bekommen. Es ist sehr subjektiv.

Es kann auch Auswirkungen auf den Debugger geben - wenn Sie im Debugger auf eine Eigenschaft in einer Klasse klicken, wird diese Eigenschaft möglicherweise aufgerufen, und Sie müssen eine teure Operation ausführen, um den Tooltip anzuzeigen.

    
n8wrl 04.09.2012 15:30
quelle
1

Nein, keinerlei Leistungssteigerung, denn sie sind auch Methoden, die Ihnen helfen, Ihre privaten Felder auf elegantere Weise zu enthüllen.

    
Freeman 04.09.2012 15:27
quelle

Tags und Links