Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 54151|Antwort: 3

[Quelle] .NET/C# Reflexions-, Emit- und Ausdrucks-Leistungstests

[Link kopieren]
Veröffentlicht am 21.3.2021, 13:23:34 | | | |
Überblick über Artikel über Reflexionen:

.net/c# nutzt die Reflexions-Dynamische Ausführungsmethode
https://www.itsvse.com/thread-4771-1-1.html

C# verwendet Reflexion, um zu bestimmen, ob eine Eigenschaft zugewiesen ist
https://www.itsvse.com/thread-3045-1-1.html

C#-Spiegelung erhält den Anzeigenamen der Objekteigenschaft
https://www.itsvse.com/thread-3219-1-1.html
Über die EMIT-Rezension:

.NET/C# Emittiert dynamisch Assemblies
https://www.itsvse.com/thread-9597-1-1.html
Zuerst erstellen Sie ein einfaches Objekt, instanziieren das Objekt und verwenden Sie Emit und Expression, um den Wert des Objekts zu lesen und zu ändern, und Sie können sehen, dass das Ausführungsergebnis wie erwartet ist, wie in der Abbildung unten gezeigt:



Benchmark mit BenchmarkDotNet für Benchmarking, wobei nur Objektwerte zum Testen gelesen werden, ausgeführt auf Net472 und NetCoreApp31, die Testergebnisse sind wie folgt:


.NET/C# verwendet BenchmarkDotNet, um die Code-Performance zu testen
https://www.itsvse.com/thread-9576-1-1.html


Zusammenfassung:

Sowohl Emit als auch Expression sind effizienter als die Verwendung von Reflexion zum Erhalten von Werten, und im .NET 4.7.2-Framework ist Emit besser als die Ausführungseffizienz des Ausdrucks, aber unter dem .NET Core 3.1-Framework ist Ausdruck besser als Ausführung.

Wenn Ihr Programm ein Objekt nur einmal dynamisch ausführen muss, wird empfohlen, Reflection zu verwenden (schließlich ist es nicht nötig, erneut zu kapseln oder einen Delegate zu erstellen), und wenn Ihr Programm ein Objekt mehrfach dynamisch ausführen muss, wird empfohlen, Emit oder Expression zu verwenden, und natürlich ist eine weitere Kapselung erforderlich.

Der Testcode ist wie folgt:

Wenn Expression verwendet wird, um Objektwerte zu erhalten, wird der Fehler wie folgt gemeldet:

Der Ausdruck des Typs 'System.Int32' kann nicht für den Rückgabetyp 'System.Object' verwendet werden
Ich weiß wirklich nicht, wie diese Leute das benutzen, sie können nur kopieren und einfügen!




Vorhergehend:.NET/C# Emittiert dynamisch Assemblies
Nächster:.NET Core ruft gRPC HTTP (non-TLS protected) Adressfehlerlösungen auf
 Vermieter| Veröffentlicht am 28.4.2025, 14:53:41 |
Verwenden Sie Expression, um Objekteigenschaften Werte zuzuweisen:


Rufen:
 Vermieter| Veröffentlicht am 28.4.2025, 15:32:51 |
.NET/C# Verwenden Sie UnsafeAccessor, um den Inhalt von schreibgeschützten Feldern zu ändern
https://www.itsvse.com/thread-10997-1-1.html
 Vermieter| Veröffentlicht am 28.04.2025, 15:40:57 |
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com