Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 54151|Risposta: 3

[Fonte] Test delle prestazioni di riflessione, emissione e espressione .NET/C#

[Copiato link]
Pubblicato il 21-03-2021 13:23:34 | | | |
Revisione degli articoli sulle riflessioni:

.net/c# sfrutta il metodo di esecuzione dinamica di riflessione
https://www.itsvse.com/thread-4771-1-1.html

C# utilizza la riflessione per determinare se una proprietà viene assegnata
https://www.itsvse.com/thread-3045-1-1.html

La riflessione C# ottiene il nome di visualizzazione della proprietà oggetto
https://www.itsvse.com/thread-3219-1-1.html
Informazioni sulla recensione EMIT:

.NET/C# Emit genera dinamicamente gli assembly
https://www.itsvse.com/thread-9597-1-1.html
Per prima cosa, crea un oggetto semplice, istanzia l'oggetto e usa emit ed expression per leggere e modificare il valore dell'oggetto, e puoi vedere che il risultato di esecuzione è quello previsto, come mostrato nella figura sottostante:



Benchmark usando BenchmarkDotNet per il benchmarking, leggendo solo i valori degli oggetti per i test, eseguito su Net472 e NetCoreApp31, i risultati del test sono i seguenti:


.NET/C# utilizza BenchmarkDotNet per testare le prestazioni del codice
https://www.itsvse.com/thread-9576-1-1.html


Sommario:

Sia emit che expression sono più efficienti rispetto all'uso della riflessione per ottenere valori, e nel framework .NET 4.7.2, emit è migliore dell'efficienza nell'esecuzione delle espressioni, ma nel framework .NET Core 3.1, l'espressione è migliore dell'esecuzione emit.

Se il tuo programma deve eseguire dinamicamente un oggetto una sola volta, si consiglia di usare la riflessione (dopotutto, non è necessario incapsulare di nuovo o creare un delegato), e se il programma deve eseguire dinamicamente un oggetto più volte, si consiglia di usare emit o expression, e ovviamente è richiesta un'ulteriore incapsulazione.

Il codice di prova è il seguente:

Quando si usano Espressione per ottenere i valori dell'oggetto, l'errore verrà segnalato come segue:

L'espressione del tipo 'System.Int32' non può essere usata per il tipo di ritorno 'System.Object'
Davvero non so come lo usino queste persone, sanno solo copiare e incollare!




Precedente:.NET/C# Emit genera dinamicamente gli assembly
Prossimo:.NET Core chiama soluzioni di errore di indirizzi gRPC HTTP (non protette TLS)
 Padrone di casa| Pubblicato il 28-04-2025 14:53:41 |
Usa Expression per assegnare valori alle proprietà degli oggetti:


Chiamata:
 Padrone di casa| Pubblicato il 28-04-2025 15:32:51 |
.NET/C# Usa UnsafeAccessor per modificare il contenuto del campo di sola lettura
https://www.itsvse.com/thread-10997-1-1.html
 Padrone di casa| Pubblicato il 28-04-2025 15:40:57 |
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com