2011-03-06 17 views
5

C# 'nin dynamic anahtar sözcüğünü sınırlı olarak kullanmayı düşünüyorum. Benim initial time trials, 100.000 yineleme (muhtemelen DLR önbelleğe alma nedeniyle) için bir saniyeden daha az bir performans isabet şaşırtıcıydı.DLR'nin bellek ayak izi nedir?

olsa bir bellek profilcisine erişimi yok

ve Eric Lippert wrote:

Sonra DLR başlar

[...] DLR sonra C# özel bir sürümünü başlar derleyici ...

Bunun bellek izi nedir ve dinamik kod çöp toplandığında boşaltıyor mu? Dinamik kod çöp toplandığında bu boşaltma kaldırılıyor mu?

+2

Ben şahsen üst düzey bir çöp toplama dili gibi bir bytecode içine derleme dlr ayak izi hakkında endişelenmeyin C# – dtech

+1

Bir profiler erişim alın. Önbelleğe alma, DLR'de anahtardır, önbelleğe alınmış durumunuz benimki gibi görünmez. –

cevap

11

Soru, yanlış bir önermeyi gerektirir; Dinamik olarak oluşturulan kodu, geçerli uygulamada toplanan çöp değildir. Önbelleğe alınmış ve önbellekler appdomain aşağı yırtılana kadar geçerlidir. son kez belirli bir kod yolunun ne zaman çağrılacağını bilmiyoruz.

Sanal bellek, yığın bellek, özel bayt, paylaşılan bayt vb. Üzerindeki etkileri öğrenmek istiyorsanız, önerim, bu belirli soruları yanıtlamak için bir bellek uzmanı kullanmanızdır. İlgilendiğiniz yarım düzine farklı "hafıza ayak izi" var ve hangisinin sizin için uygun olduğunu bilmiyorum. Sizin için ilginç olan şeyleri ölçmek için uygun aracı kullanın ve sonra bileceksiniz.

İlgili konular