Leistung der Erweiterungsmethode

7
%Vor%

Lassen Sie sich nicht von TypeX mitreißen, indem ich sage, dass ich diese Methoden lieber in TypeX als in der Extension definieren soll. Ich habe keine Kontrolle darüber (die tatsächliche Klasse I hat es auf SPListItem definiert.

Ich wollte den TypeX zu Int oder Boolean konvertieren und diese Operation ist eine häufige Sache, die ich in vielen Orten im Code mache. Ich wollte wissen, wird dies die Leistung verschlechtern. Ich habe versucht, IL-Code mit Reflektor zu interpretieren, aber bin nicht gut darin. Möglicherweise wird für das obige Beispiel keine Leistungseinbußen auftreten. Im Allgemeinen wollte ich über die Implikationen in Bezug auf die Leistung wissen, während die Erweiterungsmethoden verwendet werden.

    
Kusek 17.06.2009, 11:52
quelle

4 Antworten

24

Erweiterungsmethoden sind nur eine Kompilierzeitänderung von:

%Vor%

bis

%Vor%

Das ist alles, was dazugehört - übersetzen, was wie ein Aufruf einer Instanzmethode aussieht, in einen Aufruf einer statischen Methode.

Wenn Sie bei der statischen Methode keine Leistungsprobleme haben, führt das Hinzufügen einer Erweiterungsmethode zu keinen neuen Problemen.

BEARBEITEN: IL, wie gewünscht ...

Nehmen Sie dieses Beispiel:

%Vor%

Hier ist die IL für Extension und Normal :

%Vor%

Wie Sie sehen können, sind sie genau gleich.

    
Jon Skeet 17.06.2009, 12:02
quelle
4

Extension-Methoden sind nur Compiler Voodoo, also haben sie alle Leistungseinflüsse der normalen Methoden zur Laufzeit.

    
Wyatt Barnett 17.06.2009 11:57
quelle
2

Sie werden keine Leistung erleiden, da die Erweiterungsmethoden alle zur Kompilierzeit gebunden sind (wie sagen Sie das?).

    
Razzie 17.06.2009 11:58
quelle
1

Im schlimmsten Fall haben Sie einen zusätzlichen Funktionsanruf. Im Ernst, ich würde hoffen, dass es in der Lage sein sollte, diesen Code so einfach wie möglich zu inline zu schreiben und keinen spürbaren Effekt zu haben.

    
tvanfosson 17.06.2009 12:02
quelle

Tags und Links