Gereksinimler: .NET kaynak koduna bakarken, bazı yöntemlerin [MethodImpl(MethodImplOptions.AggressiveInlining)] özelliğini eklediğini gördüm, ancak MethodImpl özelliğinin JIT derleyicisinin davranışını etkileyebildiğini gördüm. Bazı testler internetteki bilgilere dayanarak gerçekleştirildi.
MethodImplOptions yapılandırması
Kod:
Inline fonksiyon
Bilgisayar biliminde, satır içi fonksiyon (bazen çevrimiçi fonksiyon veya derleme zamanı genişletme fonksiyonu olarak da adlandırılır), derleyicinin bazı özel fonksiyonlara satır içi uzantılar (bazen çevrimiçi uzantılar olarak adlandırılır) önermek için kullanılan bir programlama dili yapısıdır; Bu, derleyicinin, fonksiyonun çağrıldığı her yer (bağlam) yerine belirtilen fonksiyon gövdesini ekleyip değiştirdiği anlamına gelir; böylece fonksiyona yapılan her çağrıda harcanan ek zamanı tasarruf eder. Ancak, satır içi fonksiyonları kullanmaya karar verirken programın kapladığı alanı ve program yürütme verimliliğini tartmak gerekir; çünkü hatır içi genişletme için çok fazla karmaşık fonksiyon büyük depolama kaynakları maliyetleri getirecektir. Ayrıca, özyinelemeli fonksiyonların satır içi uzantılarının bazı derleyicilerin sonsuz derlemesine neden olabileceğini belirtmek önemlidir.
MethodImplOptions.AggressiveInlining
Fonksiyon: JIT derleyicisinin yöntemi mümkün olduğunca iç çizgiye yerleştirmesi önerilir. Açıklama: Inline, bir fonksiyon çağrısının fonksiyon gövdesiyle değiştirilmesini ifade eder; böylece fonksiyon çağrısının ek yükü azaltılır. Uygulanabilir senaryolar: Küçük, sıkça adlandırılan yöntemler için uygundur (örneğin, nitelik erişimcileri, basit matematiksel hesaplamalar vb.). Not: Bu sadece bir "öneridir"; JIT derleyicisi, gerçek duruma bağlı olarak gerçekten inline yapıp yapmamaya karar verebilir.
"Inline" ve "not inline" testinin sonuçları şunlardır:
Test kodu şu şekildedir:
Hatta hatır içi çağrılardan sonra CPU kullanımının hatır dışı çağrılara göre çok daha düşük olduğu tespit edildiÇok endişelenmeyin, günümüz derleyicileri çok akıllı, bu özelliği eklemeseniz bile, derleyici otomatik olarak optimize etmenize yardımcı olabilir。 |