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ı incelemek istiyorsanız desteklenen OS sürümlerinde varsayılan olarak yakalanan yöntem izlemesini inceleyin veya başka profil oluşturma yapılandırmaları seçin.

Profilleyici yapılandırmasını seçmek için aşağıdaki snippet'te gösterildiği gibi androidx.benchmark.profiling.mode enstrümantasyon çalıştırıcı bağımsız değişkenini 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, izlemenin eşdeğeridir ve StackSampling, söz konusu belgede tanımlandığı şekilde örneklemenin eşdeğeridir.

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 profilini oluşturduğunuzda, JSON sonuçlarıyla birlikte dizinde bir çıkış .trace dosyası ana makineye kopyalanır. Android Studio'da profil oluşturma sonuçlarını incelemek için mikro karşılaştırma sonuçlarından Yöntem İzleme veya Yığın Örnekleme İzleme bağlantısını seçin.

MethodTracing

Kodunuzu optimize etmeye çalışırken yöntem izleme, çalıştırması diğerlerinden daha uzun süren yöntemleri belirlemenize yardımcı olabileceğinden kullanışlıdır. Ardından, performansı en fazla etkileyen yöntemleri optimize etmeye odaklanabilirsiniz.

Profil oluşturma, kod ölçümünden sonra sırayla gerçekleşir. Böylece testiniz hem doğru zamanlama hem de profil oluşturma sonuçlarını gösterir.

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

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

StackSampling

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

Yığın örneklemede, karşılaştırma, ı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ışlarını kontrol edebilirsiniz.

Android 10 (API 29) ve sonraki sürümlerde yığın örnekleme, C++ kodu 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 bir enstrümantasyon bağımsız değişkeni 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 ö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 olarak 5 saniyedir.
  • androidx.benchmark.profiling.skipWhenDurationRisksAnr

    • ANR'ye neden olma olasılığı olduğunda yöntem izlemeyi atlar. ANR'ler uzun CI çalıştırmalarında soruna neden olabileceğinden, bu seçeneği CI çalıştırmalarında 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ı yakalamaz. Zamanlama ve atamalarla ilgili bilgiler ölçülmeye devam eder.