Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 54151|Odpověď: 3

[Zdroj] .NET/C# Testování výkonu reflexe, emitu, výrazu

[Kopírovat odkaz]
Zveřejněno 2021-3-21 13:23:34 | | | |
Recenze článků o reflexích:

.NET/C# využívá metodu dynamického vykonávání reflexe
https://www.itsvse.com/thread-4771-1-1.html

C# používá reflexi k určení, zda je vlastnost přiřazena
https://www.itsvse.com/thread-3045-1-1.html

C# reflexe získává zobrazovací název vlastnosti objektu
https://www.itsvse.com/thread-3219-1-1.html
O EMIT Review:

.NET/C# Emit dynamicky generuje assemblies
https://www.itsvse.com/thread-9597-1-1.html
Nejprve vytvořte jednoduchý objekt, instancujte objekt a použijte emit a expression k přečtení a úpravě hodnoty objektu, a uvidíte, že výsledek vykonání je očekávaný, jak je znázorněno na obrázku níže:



Benchmark s využitím BenchmarkDotNet pro benchmarking, čtení pouze objektových hodnot pro testování, běžící na Net472 a NetCoreApp31, výsledky testu jsou následující:


.NET/C# používá BenchmarkDotNet k testování výkonu kódu
https://www.itsvse.com/thread-9576-1-1.html


Shrnutí:

Emit i expression jsou efektivnější než použití reflection pro získání hodnot, a v rámci .NET 4.7.2 je emit lepší než efektivita provádění expression, ale v .NET Core 3.1 je expression lepší než emisit execution.

Pokud váš program potřebuje dynamicky spustit objekt pouze jednou, doporučuje se použít reflexi (koneckonců není potřeba znovu zapouzdřit nebo vytvářet delegáta), a pokud váš program potřebuje dynamicky spouštět objekt vícekrát, doporučuje se použít emit nebo expression, a samozřejmě je potřeba další zapouzdření.

Testovací kód je následující:

Při použití Expression k získání hodnot objektů bude chyba hlášena následovně:

Výraz typu 'System.Int32' nelze použít pro návratový typ 'System.Object'
Opravdu nevím, jak to tito lidé používají, umí jen kopírovat a vkládat!




Předchozí:.NET/C# Emit dynamicky generuje assemblies
Další:.NET Core volá gRPC HTTP (ne-TLS chráněná) řešení chyb adres
 Pronajímatel| Zveřejněno 28. 4. 2025 14:53:41 |
Použijte Expression k přiřazení hodnot vlastnostem objektu:


Výzva:
 Pronajímatel| Zveřejněno 28. 4. 2025 15:32:51 |
.NET/C# Použijte UnsafeAccessor k úpravě obsahu pole pouze pro čtení
https://www.itsvse.com/thread-10997-1-1.html
 Pronajímatel| Zveřejněno 28. 4. 2025 15:40:57 |
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com