Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Bir C# Satırı CPU'da Nasıl Çalışır: Kaynak Koddan IL'e, Assembly'den Instruction'a
Bir C# satırı CPU'ya iki çeviriyle ulaşır: Roslyn onu IL'e, JIT de çalışma anında o makinenin ISA'sına göre machine code'a çevirir; CPU bu byte'ları fetch-decode-execute döngüsüyle işler. TotalQuantity'nin 30 byte'lık x64 Tier-1 kodunu satır satır okuyor, ARM64 karşılığıyla, 789 byte'lık decimal versiyonuyla ve optimizasyonsuz Tier-0 ölçümüyle karşılaştırıyor, .NET 11'in x86-64-v2 tabanını anlatıyoruz.
PerfView ile Derin Analiz: GC Stats, JIT Stats, Grouping/Folding ve İki Trace'i Karşılaştırmak
PerfView'in gücü GroupPats, Fold%, diff ve GCStats/JITStats raporlarında; hepsi TraceEvent kütüphanesine dayandığı için aynı analizi Linux'ta kodla da yapabilirsin. Bookstore'da iki trace'i diff'leyerek bir regresyonun 2,6 saniyesinin GC beklemesi olduğunu buluyor, JITStats ile ReadyToRun'ın açılışta JIT'lenen method'ları yalnızca 980'den 928'e indirdiğini ölçüyor ve CI için gürültüsü ölçülmüş bir allocation kapısı kuruyoruz.