Mikro Karşılaştırma Profili Oluşturma

Mikro karşılaştırmalar, varsayılan olarak yürütülen kodun zamanlaması ve ayırmaları hakkında bilgi verir. Ölçülen kodun neden yavaş çalıştığını araştırmak istiyorsanız desteklenen OS sürümlerinde varsayılan olarak yakalanan yöntem izini inceleyin veya diğer profil oluşturma yapılandırmalarını seçin.

Profil oluşturucu yapılandırmasını seçmek için aşağıdaki snippet'te gösterildiği gibi MethodTracing (varsayılan), StackSampling veya None bağımsız değişkenlerinden biriyle androidx.benchmark.profiling.mode araç çalıştırma bağımsız değişkenini ekleyin.

Seçenekler hakkında daha fazla bilgi için Java/Kotlin yöntemlerini kaydetme başlıklı makaleyi inceleyin. MethodTracing, izlemenin eşdeğeridir ve StackSampling, bu belgede tanımlandığı şekilde örneklemenin eşdeğeridir.

Modern

android {
    defaultConfig {
        // must be one of: 'None', 'StackSampling', or 'MethodTracing'
        testInstrumentationRunnerArguments["androidx.benchmark.profiling.mode"]= 'StackSampling'
    }
}

Kotlin

android {
    defaultConfig {
        // must be one of: 'None', 'StackSampling', or 'MethodTracing'
        testInstrumentationRunnerArguments["androidx.benchmark.profiling.mode"] = "StackSampling"
    }
}

Bir karşılaştırmayı profillediğinizde, çıkış .trace dosyası, JSON sonuçlarıyla birlikte ana makinedeki dizine kopyalanır. Android Studio'da profil oluşturma sonuçlarını incelemek için mikro karşılaştırma sonuçlarında Yöntem İzi veya Yığın Örnekleme İzi bağlantısını seçin.

MethodTracing

Yöntem izleme, kodunuzu optimize etmeye çalışırken faydalıdır çünkü diğerlerinden daha uzun süren yöntemleri belirlemenize yardımcı olabilir. Ardından, performans üzerinde en büyük etkiye sahip yöntemleri optimize etmeye odaklanabilirsiniz.

Profil oluşturma, kod ölçümünden sonra sırayla gerçekleşir. Bu nedenle, testiniz hem doğru zamanlama hem de profil oluşturma sonuçları verir.

Yöntem izleme varsayılan olarak açıktır.

Not: Bazı Android OS ve ART sürümlerinde yöntem izleme varsayılan olarak kapalıdır. Bu gibi durumlarda Android Studio bir uyarı verir.

StackSampling

Örnek izleme, yöntem izlemenin performans ek yükü olmadan pahalı yöntemleri belirlemeye de yardımcı olabilir. Ancak uygulamanız bir çağrı yığını yakalandıktan sonra bir yönteme girerse ve yöntem bir sonraki yakalamadan önce çıkarsa yöntem çağrısı günlüğe kaydedilmez. Kısa yaşam döngülerine sahip yöntemleri doğru şekilde izlemek için örnek izleme yerine yöntem izlemeyi kullanın.

Yığın örnekleme kullanıldığında karşılaştırma, ısınma tamamlandıktan sonra çağrı yığınlarını örnekler. Örnekleme sıklığı ve örnekleme süresi gibi örnekleme davranışını, araç bağımsız değişkenlerini kullanarak kontrol edebilirsiniz.

Android 10 (API 29) ve sonraki sürümlerde yığın örnekleme, C++ kodu da dahil olmak üzere uygulama çağrı yığınlarını örneklemek için Simpleperf'i kullanır. Android 9 (API 28) ve önceki sürümlerde yığın örneklerini yakalamak için Debug.startMethodTracingSampling kullanılır.

Başka araçlandırma bağımsız değişkenleri ekleyerek bu profil oluşturma modunu yapılandırabilirsiniz:

  • androidx.benchmark.profiling.sampleFrequency

    • Saniyede yakalanacak yığın örneği sayısı.
    • Bağımsız değişken türü: tam sayı
    • Varsayılan olarak saniyede 1.000 örnektir.
  • androidx.benchmark.profiling.sampleDurationSeconds

    • Çalıştırılacak karşılaştırmanın süresi.
    • Bağımsız değişken türü: tam sayı
    • Varsayılan değer 5 saniyedir.
  • androidx.benchmark.profiling.skipWhenDurationRisksAnr

    • ANR'ye neden olma olasılığı yüksek olduğunda yöntem izlemeyi atlar. ANR'ler uzun CI çalıştırmaları sırasında sorunlara neden olabileceğinden, CI çalıştırmaları için bu seçeneği etkin tutmanız gerekir.
    • Bağımsız değişken türü: boole
    • Varsayılan olarak true değerine ayarlanır.

Yok

Bu bağımsız değişken, profil oluşturma dosyasını yakalamaz. Zamanlama ve tahsislerle ilgili bilgiler hâlâ ölçülür.