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

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

Profiler yapılandırmasını seçmek için aşağıdaki snippet'te gösterildiği gibi enstrümantasyon çalıştırıcı bağımsız değişkenini androidx.benchmark.profiling.mode ile birlikte MethodTracing (varsayılan), StackSampling veya None bağımsız değişkenlerinden biriyle ekleyin.

Seçenekler hakkında daha fazla bilgi için Java/Kotlin yöntemlerini kaydetme başlıklı makaleyi inceleyin. MethodTracing, izlemeye, StackSampling ise bu dokümanda tanımlandığı şekilde örneklemeye eşdeğerdir.

Groovy

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ırma ölçütünü profillendirdiğinizde, .trace çıkış dosyası JSON sonuçlarının yanında dizininde ana makineye kopyalanır. Android Studio'da profilleme sonuçlarını incelemek için mikro karşılaştırma sonuçlarındaki Method Trace (Yöntem İzleme) veya Stack Sampling Trace (Yığın Örnekleme İzleme) bağlantısını seçin.

MethodTracing

Yöntem izleme, kodunuzu optimize etmeye çalışırken faydalıdır. Çünkü diğerlerinden daha uzun sürede çalışan yöntemleri belirlemenize yardımcı olabilir. Ardından, performansı en çok etkileyen yöntemleri optimize etmeye odaklanabilirsiniz.

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

Yöntem izleme varsayılan olarak etkindir.

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

StackSampling

Örnek izleme, yöntem izlemenin performans ek yükü olmadan maliyetli 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 yakalama işleminden önce çıkarsa yöntem çağrısı kaydedilmez. Kısa yaşam döngülerine sahip yöntemleri düzgün şekilde izlemek için örnek izleme yerine yöntem izlemeyi kullanın.

Yığın örnekleme ile karşılaştırma testi, ısınma tamamlandıktan sonra çağrı yığınlarını örnekler. Enstrümantasyon bağımsız değişkenlerini kullanarak örnekleme sıklığı ve örnekleme süresi gibi örnekleme davranışını 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'ü kullanır. Android 9 (API 28) ve önceki sürümlerde yığın örneklerini yakalamak için Debug.startMethodTracingSampling kullanılır.

Başka bir enstrümantasyon bağımsız değişkeni ekleyerek bu profilleme modunu yapılandırabilirsiniz:

  • androidx.benchmark.profiling.sampleFrequency

    • Saniyede yakalanacak yığın örneklerinin sayısı.
    • Bağımsız değişken türü: tam sayı
    • Varsayılan olarak saniyede 1.000 örnek ayarlanır.
  • 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, bu özelliği CI çalıştırmaları için 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 dağıtımla ilgili bilgiler ölçülmeye devam eder.