Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 54151|Válasz: 3

[Forrás] .NET/C# Reflektív, Emit, Expresszív teljesítménytesztelés

[Linket másol]
Közzétéve: 2021-3-21 13:23:34 | | | |
Cikkek áttekintése a reflexiókról:

A .net/c# kihasználja a reflektorizáló dinamikus végrehajtási módszert
https://www.itsvse.com/thread-4771-1-1.html

C# a visszaverődést használja annak meghatározására, hogy egy tulajdonság van-e hozzárendelve
https://www.itsvse.com/thread-3045-1-1.html

C# tükröződés kapja az objektum tulajdonságának megjelenített nevét
https://www.itsvse.com/thread-3219-1-1.html
Az EMIT Review-ról:

.NET/C# Dinamikusan generál összeállításokat
https://www.itsvse.com/thread-9597-1-1.html
Először hozz létre egy egyszerű objektumot, instanciáljuk az objektumot, és használd az emit és expression segítségével olvassuk és módosítsuk az objektum értékét, és láthatod, hogy a végrehajtási eredmény a várt, ahogy az alábbi ábrán is látható:



Benchmark Benchmark Benchmark segítségével BenchmarkDotNet segítségével tesztel, csak objektumértékeket olvas teszteléshez, Net472 és NetCoreApp31 rendszeren fut, a teszteredmények a következők:


.NET/C# a BenchmarkDotNet-et használja a kód teljesítményének tesztelésére
https://www.itsvse.com/thread-9576-1-1.html


Összefoglalás:

Mind az emit, mind az expression hatékonyabb, mint a visszaverődés segítségével értékeket szerezni, és a .NET 4.7.2 keretrendszerben az emit jobb az expression végrehajtási hatékonysága, míg a .NET Core 3.1 keretrendszerben az expression jobb, mint az emit végrehajtás.

Ha a programodnak csak egyszer kell dinamikusan végrehajtania egy objektumot, akkor ajánlott a reflektívát használni (hiszen nincs szükség újra kapszulázásra vagy delegált létrehozására), és ha a programodnak többször is dinamikusan kell végrehajtania egy objektumot, akkor ajánlott az emit vagy expression használatát, és természetesen további kapszulázás szükséges.

A tesztkód a következő:

Amikor az Expression-t használjuk objektumértékek megszerzésére, a hibát a következőképpen jelentjük:

A 'System.Int32' típusú kifejezés nem használható a 'System.Object' visszatérő típushoz
Tényleg nem tudom, hogy ezek az emberek hogyan használják, csak másolni és beilleszteni tudnak!




Előző:.NET/C# Dinamikusan generál összeállításokat
Következő:A .NET Core gRPC HTTP (nem TLS védett) címhibamegoldásokat hív
 Háziúr| Közzétéve: 2025-4-28 14:53:41 |
Használd az Expression-t értékek hozzárendelésére objektumtulajdonságokhoz:


Hívás:
 Háziúr| Közzétéve: 2025-4-28 15:32:51 |
.NET/C# Használja az UnsafeAccessor-t az csak olvasható mező tartalmának módosításához
https://www.itsvse.com/thread-10997-1-1.html
 Háziúr| Közzétéve: 2025-4-28 15:40:57 |
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com