Windows 10'da System.Diagnostics.StackFrame performansı düşüyor

Windows 10 veya .NET Framework 4.7.1'e yükselttikten sonra ve System.Diagnostics.StackFrame sınıfını kullanan .NET Framework uygulamalarını çalıştırdığınızda performansta önemli bir düşüş fark ederseniz , bu yazı ilginizi çekebilir. Nedenine bakacağız ve ardından hata için bilinen düzeltmeler sunacağız.

System.Diagnostics.StackFrame performans düşüşü

System.Diagnostics.StackFrame performans düşüşü

.NET Framework 4.7 veya önceki sürümlerde kabul edilebilir performansa sahip bir uygulama .NET Framework 4.7.1 üzerinde çalışırken daha yavaş yürütülür . Uygulamalar, .NET istisnaları oluşturduklarında genellikle StackFrame'e güvenirler. Bu, yüksek bir hızda (saniyede 10'dan fazla olay) meydana gelirse, uygulamalar önemli ölçüde yavaşlayabilir (on kat) ve öncekinden belirgin şekilde daha yavaş çalışabilir.

System.Diagnostics.StackFrame performansının düşmesinin nedeni(Cause of the System.Diagnostics.StackFrame performance degrade)

Windows 10'daki(Windows 10) .NET Framework 4.7.1(.NET Framework 4.7.1) , yığın izlemelerinde dosya ve satır numarası bilgilerini göstermek için Portable PDB dosya biçimini algılama ve ayrıştırma desteği ekledi . Bu değişikliğin bir parçası olarak, bir yığın izlemedeki her işlevin, bu modülün Taşınabilir PDB biçimini kullanıp kullanmadığını belirlemek için tanımlayıcı modülü kontrol edilir. Dahili önbelleğe alma ilkesindeki bazı farklılıklar nedeniyle , çalışma zamanı, (Due)Taşınabilir PDB'leri aramak için, klasik (Portable PDBs)Windows PDB'leri(Windows PDBs) aramak için harcanan önceki .NET Framework sürümlerine göre çok daha fazla zaman harcar .

Bu, biçimlendirilmiş yığın izlerinin eskisinden daha yavaş üretilmesine neden olur.

Bu sorun, atılan özel durumların sayısını değiştirmez. Ancak, uygulamaların bu istisnaları işleme yeteneğini önemli ölçüde azaltır.

IKVM kitaplığını kullanan uygulamaların, derlemeler için araştırma yapmaları durumunda bu sorundan etkilendiği bilinmektedir. Derlemeler için araştırma yapmanın istisnalara neden olduğu bilinmektedir.

System.Diagnostics.StackFrame(Fix System.Diagnostics.StackFrame) performans düşüşü sorununu düzeltin

Bu sorunu çözmek için Microsoft , aşağıdaki yöntemlerden birinin kullanılmasını önerir.

1] StackFrame için Boole argümanı alan farklı bir kurucu kullanın(1] Use a different constructor for StackFrame that takes a Boolean argument)

Bu tercih edilen çözümdür.

Uygulama geliştiricileri uygulamalarında değişiklik yapabiliyorsa , System.Diagnostics.StackTrace'i (System.Diagnostics.StackTrace.)arayın . (call the) #ctor( Boolean ) yapıcısı, kaynak bilgilerinin yakalanmasını önlemek için yanlış bir argüman kullanarak. Bu, performansın azaltıldığı kod bölümünden kaçınır.

2] Geri alma veya en son Windows 10 sürümüne yükseltme(2]  Rollback or upgrade to the latest Windows 10 version)

Bu yöntemde, bu sorunu yaşıyorsanız ve şu anda Windows 10'un en son sürümünü çalıştırmıyorsanız, önceki (Windows 10)sürüme/derlemeye geri dönün  veya Windows 10'un (Windows 10)upgrade to the latest version/build . Ayrıca , varsa, .NET Framework 4.7.1'i bilgisayarınızdan kaldırın ve ardından .NET Framework'ün(.NET Framework) önceki bir sürümünü veya en son sürümünü indirip(download) yükleyin .

Hope this helps!



About the author

İş ve teknolojide, Windows 10 ve Windows 11/10 çok önemli araçlardır. Bilgisayarlarla her zamankinden daha kolay ve güvenli bir şekilde etkileşim kurmanıza ve herhangi bir güvenlik riski olmadan güçlü ancak özelleştirilebilir uygulamaları çalıştırmanıza olanak tanır. Bu araçlar, çevrimiçi varlıklarını büyütmek ve yeni müşterilere ulaşmak isteyen işletmeler için de gereklidir. Bu nedenle, Windows 10 ve Windows 11/10'daki becerilerimin beni böyle bir iş veya iş için harika bir aday yaptığını söyleyebilirim.



Related posts