Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 54151|Répondre: 3

[Source] Tests de performance de réflexion, émission et expression .NET/C#

[Copié le lien]
Publié le 21-03-2021 à 13:23:34 | | | |
Revue des articles sur les réflexions :

.net/c# exploite la méthode d’exécution dynamique de réflexion
https://www.itsvse.com/thread-4771-1-1.html

C# utilise la réflexion pour déterminer si une propriété est attribuée
https://www.itsvse.com/thread-3045-1-1.html

La réflexion C# obtient le nom d’affichage de la propriété objet
https://www.itsvse.com/thread-3219-1-1.html
À propos de l’examen EMIT :

.NET/C# Emit génère dynamiquement des assemblages
https://www.itsvse.com/thread-9597-1-1.html
D’abord, créez un objet simple, instanciez l’objet, puis utilisez emit et expression pour lire et modifier la valeur de l’objet, et vous verrez que le résultat d’exécution est attendu, comme montré dans la figure ci-dessous :



Benchmark utilisant BenchmarkDotNet pour le benchmarking, ne lisant que les valeurs d’objets pour les tests, fonctionnant sur Net472 et NetCoreApp31, les résultats du test sont les suivants :


.NET/C# utilise BenchmarkDotNet pour tester la performance du code
https://www.itsvse.com/thread-9576-1-1.html


Résumé:

Emit et expression sont tous deux plus efficaces que d’utiliser la réflexion pour obtenir des valeurs, et dans le cadre .NET 4.7.2, emit est meilleur que l’efficacité d’exécution d’expression, mais sous le framework .NET Core 3.1, expression est meilleure que l’exécution d’emit.

Si votre programme n’a besoin d’exécuter dynamiquement un objet qu’une seule fois, il est recommandé d’utiliser la réflexion (après tout, il n’est pas nécessaire d’encapsuler à nouveau ou de créer un délégué), et si votre programme doit exécuter dynamiquement un objet plusieurs fois, il est recommandé d’utiliser l’émission ou l’expression, et bien sûr, une encapsulation supplémentaire est nécessaire.

Le code de test est le suivant :

Lors de l’utilisation d’Expression pour obtenir les valeurs des objets, l’erreur sera rapportée comme suit :

L’expression du type 'System.Int32' ne peut pas être utilisée pour le type de retour 'System.Object'
Je ne comprends vraiment pas comment ces gens l’utilisent, ils savent juste copier-coller !




Précédent:.NET/C# Emit génère dynamiquement des assemblages
Prochain:.NET Core appelle des solutions d’erreur d’adresse gRPC HTTP (non protégées par TLS)
 Propriétaire| Publié le 28-04-2025 à 14:53:41 |
Utilisez Expression pour attribuer des valeurs aux propriétés de l’objet :


Annonce :
 Propriétaire| Publié le 28-04-2025 à 15:32:51 |
.NET/C# Utiliser UnsafeAccessor pour modifier le contenu des champs en lecture seule
https://www.itsvse.com/thread-10997-1-1.html
 Propriétaire| Publié le 28-04-2025 à 15:40:57 |
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com