Leistungsunterschied zwischen .NET-Methode (in .dll) und reflektierter Version

9

Ich habe versucht, eine JavaScript-Codierungsfunktion (in C #) zu optimieren, um die Leistung zu verbessern (in einem allgemeinen Versuch, die Leistung einer Unternehmens-Webanwendung zu verbessern). Wir haben versucht, .NET HttpUtility.JavaScriptStringEncode zu verwenden, aber es kodiert nicht die Art, wie unsere Datenschicht vorwegnimmt (und die Datenschicht ist nicht auf dem Tisch).

Mit dem RedGate-Profiler-Tool habe ich festgestellt, dass die beste Leistung unserer Funktion bei etwa 8% der gesamten Seitenauslastung liegt. Wenn ich die .NET-Funktion (auf einer Seite, die es akzeptiert) verwenden, kommt es um etwa 0,08% der gesamten Seitenlast. Wir haben die .NET-Funktion reflektiert, um zu sehen, welche Zauberei sie gearbeitet haben, und als ich den reflektierten Code in die Funktion kopiert und direkt ausgeführt habe, hat sie etwa 10% erreicht.

Ich bin neugierig, warum. Wie ist die .NET-Funktion anders vorbereitet, um eine solche Leistungssteigerung zu vergeben?

Ich entschuldige mich im Voraus, aber ich kann die Funktion, die wir verwenden, nicht einfügen, aber ich denke nicht, dass dies Auswirkungen auf die Beantwortung der Frage haben sollte.

    
BeardedCoder 09.02.2013, 00:30
quelle

1 Antwort

1

Können Sie den erzeugten IL-Code vergleichen, nachdem Sie den reflektierten Code mit dem in der .NET-Bibliothek vorhandenen IL-Code in Ihre Bibliothek eingefügt haben? Der Compiler-Schalter, der zum Kompilieren verwendet wird, kann solche Unterschiede verursachen.

    
guruprasath 08.03.2013 09:17
quelle

Tags und Links