Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 54151|Odgovoriti: 3

[Vir] .NET/C# testiranje zmogljivosti refleksije, oddajanja in izražanja

[Kopiraj povezavo]
Objavljeno 21. 3. 2021 ob 13:23:34 | | | |
Pregled člankov o razmišljanjih:

.net/c# izkorišča metodo dinamičnega izvajanja refleksije
https://www.itsvse.com/thread-4771-1-1.html

C# uporablja refleksijo za določanje, ali je lastnost dodeljena
https://www.itsvse.com/thread-3045-1-1.html

C# refleksija dobi prikazno ime lastnosti objekta
https://www.itsvse.com/thread-3219-1-1.html
O EMIT Review:

.NET/C# Emit dinamično generira sestave
https://www.itsvse.com/thread-9597-1-1.html
Najprej ustvarite preprost objekt, ga instancirajte in uporabite emit in expression za branje ter spreminjanje vrednosti objekta, in lahko vidite, da je rezultat izvedbe tak, kot je pričakovano, kot je prikazano na spodnji sliki:



Benchmark z uporabo BenchmarkDotNet za testiranje, branje le vrednosti objektov za testiranje, ki teče na Net472 in NetCoreApp31, rezultati testa so naslednji:


.NET/C# uporablja BenchmarkDotNet za testiranje zmogljivosti kode
https://www.itsvse.com/thread-9576-1-1.html


Povzetek:

Tako emit kot izraz sta učinkovitejša kot uporaba refleksije za pridobivanje vrednosti, in v okviru .NET 4.7.2 je emit boljši kot učinkovitost izvajanja izraza, vendar je v .NET Core 3.1 okviru izraz boljši od izvajanja emit.

Če vaš program potrebuje dinamično izvedbo objekta le enkrat, je priporočljivo uporabiti reflection (navsezadnje ni potrebe po ponovnem enkapsuliranju ali ustvarjanju delegata), in če mora vaš program dinamično izvesti objekt večkrat, je priporočljivo uporabiti emit ali expression, seveda pa je potrebna nadaljnja enkapsulacija.

Testna koda je naslednja:

Pri uporabi izraza za pridobitev vrednosti objektov bo napaka prikazana takole:

Izraza tipa 'System.Int32' ni mogoče uporabiti za vrnjeni tip 'System.Object'
Res ne vem, kako ti ljudje to uporabljajo, znajo le kopirati in prilepiti!




Prejšnji:.NET/C# Emit dinamično generira sestave
Naslednji:.NET Core kliče gRPC HTTP (ne-TLS zaščiten) rešitve napak pri naslovih
 Najemodajalec| Objavljeno 28. 4. 2025 ob 14:53:41 |
Uporabite izraz za dodelitev vrednosti lastnostim objektov:


Klic:
 Najemodajalec| Objavljeno 28. 4. 2025 ob 15:32:51 |
.NET/C# Uporabite UnsafeAccessor za spreminjanje vsebine polja samo za branje
https://www.itsvse.com/thread-10997-1-1.html
 Najemodajalec| Objavljeno 28. 4. 2025 ob 15:40:57 |
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com