Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 54151|Yanıt: 3

[Kaynak] .NET/C# Yansıtma, Emit, İfade performans testi

[Bağlantıyı kopyala]
2021-3-21 tarihinde 13:23:34 tarihinde yayınlandı | | | |
Yansımalar üzerine makalelerin incelemesi:

.net/c#, yansıtma dinamik yürütme yönteminden faydalanır
https://www.itsvse.com/thread-4771-1-1.html

C#, bir özelliğin atanıp atanmadığını belirlemek için yansıma kullanır
https://www.itsvse.com/thread-3045-1-1.html

C# yansıması, nesne özelliğinin gösterim adını alır
https://www.itsvse.com/thread-3219-1-1.html
EMIT İncelemesi Hakkında:

.NET/C# Emit dinamik olarak assemble üretir
https://www.itsvse.com/thread-9597-1-1.html
Öncelikle, basit bir nesne oluşturun, nesneyi örnekleyin ve emit ile ifade kullanarak nesnenin değerini okuyup değiştirin; böylece aşağıdaki şekilde gösterildiği gibi yürütme sonucunun beklendiği gibi olduğunu görebilirsiniz:



Benchmark için BenchmarkDotNet kullanarak, test için yalnızca nesne değerlerini okuyordu, Net472 ve NetCoreApp31 üzerinde çalışıyor, test sonuçları aşağıdaki gibidir:


.NET/C#, kod performansını test etmek için BenchmarkDotNet kullanır
https://www.itsvse.com/thread-9576-1-1.html


Özet:

Hem emit hem de ifade, değer almak için yansıtmayı kullanmaktan daha verimlidir ve .NET 4.7.2 çerçevesinde emit, ifade yürütme verimliliğinden daha iyidir, ancak .NET Core 3.1 çerçevesinde ifade emit yürütmesinden daha iyidir.

Programınız bir nesneyi dinamik olarak sadece bir kez çalıştırmak zorunda kalıyorsa, yansıtma (sonuçta tekrar kapsüllemeye veya delege oluşturmaya gerek yok) önerilir, programınız bir nesneyi birden fazla kez dinamik olarak çalıştırması gerekiyorsa, emit veya ifade kullanımı önerilir ve tabii ki ek kapsülleme gereklidir.

Test kodu şu şekildedir:

Expression kullanılarak nesne değerleri elde edilirken, hata şu şekilde bildirilir:

'System.Int32' tipindeki ifade 'System.Object' dönüş tipi için kullanılamaz
Bu insanların nasıl kullandığını gerçekten bilmiyorum, sadece kopyalayıp yapıştırmayı biliyorlar!




Önceki:.NET/C# Emit dinamik olarak assemble üretir
Önümüzdeki:.NET Core, gRPC HTTP (TLS korumasız) adres hata çözümleri çağırıyor
 Ev sahibi| 2025-4-28 14:53:41 tarihinde yayınlandı |
Nesne özelliklerine değer atmak için Expression kullanın:


Ara:
 Ev sahibi| 2025-4-28 15:32:51 tarihinde yayınlandı |
.NET/C# UnsafeAccessor'u kullanarak yalnızca okunabilir alan içeriğini değiştirin
https://www.itsvse.com/thread-10997-1-1.html
 Ev sahibi| 2025-4-28 15:40:57 tarihinde yayınlandı |
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com