Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 54151|Vastaus: 3

[Lähde] .NET/C# Heijastus-, Emit- ja Expression-suorituskyvyn testaus

[Kopioi linkki]
Julkaistu 2021-3-21 13:23:34 | | | |
Arvostelu artikkeleista pohdinnasta:

.net/c# hyödyntää heijastusdynaamisen suoritusmenetelmän
https://www.itsvse.com/thread-4771-1-1.html

C# käyttää heijastusta määrittääkseen, onko ominaisuus annettu
https://www.itsvse.com/thread-3045-1-1.html

C# heijastus saa objektin ominaisuuden näyttönimen
https://www.itsvse.com/thread-3219-1-1.html
Tietoa EMIT-arvostelusta:

.NET/C# Emit generoi kokoonpanoja dynaamisesti
https://www.itsvse.com/thread-9597-1-1.html
Ensiksi luo yksinkertainen olio, instanssi objekti ja käytä emit- ja lauseketta lukeaksesi ja muuttaaksesi objektin arvoa, ja näet, että suoritustulos on odotettu kuten alla olevassa kuvassa näkyy:



Benchmark käyttää BenchmarkDotNetiä vertailuun, lukee vain objektiarvoja testaukseen, toimii Net472:lla ja NetCoreApp31:llä, testitulokset ovat seuraavat:


.NET/C# käyttää BenchmarkDotNetia koodin suorituskyvyn testaamiseen
https://www.itsvse.com/thread-9576-1-1.html


Yhteenveto:

Sekä emit että lauseke ovat tehokkaampia kuin heijastuksen käyttö arvojen saamiseksi, ja .NET 4.7.2 -kehyksessä emit on parempi kuin lausekkeen suoritustehokkuus, mutta .NET Core 3.1 -kehyksessä lauseke on parempi kuin emit-suoritus.

Jos ohjelmasi tarvitsee dynaamisesti suorittaa objektin vain kerran, suositellaan heijastusta (loppujen lopuksi ei tarvitse kapseloida uudelleen tai luoda delegaattia), ja jos ohjelmasi tarvitsee suorittaa objektia dynaamisesti useita kertoja, suositellaan emitteriä tai ilmaisutoimintoja, ja tietenkin lisäkapselointi on tarpeen.

Testikoodi on seuraava:

Kun käytetään Expressionia objektiarvojen saamiseksi, virhe raportoidaan seuraavasti:

Tyypin 'System.Int32' lauseketta ei voi käyttää palautustyypille 'System.Object'
En oikeasti tiedä, miten nämä ihmiset käyttävät sitä, he osaavat vain kopioida ja liittää sen!




Edellinen:.NET/C# Emit generoi kokoonpanoja dynaamisesti
Seuraava:.NET Core kutsuu gRPC HTTP (ei-TLS-suojattu) osoitevirheratkaisuja
 Vuokraisäntä| Julkaistu 2025-4-28 14:53:41 |
Käytä Expressionia arvojen määrittämiseen objektin ominaisuuksille:


Soita:
 Vuokraisäntä| Julkaistu 2025-4-28 15:32:51 |
.NET/C# Käytä UnsafeAccessoria vain luku -kentän sisällön muokkaamiseen
https://www.itsvse.com/thread-10997-1-1.html
 Vuokraisäntä| Julkaistu 2025-4-28 klo 15:40:57 |
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com