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

Mikro karşılaştırmalar varsayılan olarak, yürütülen kodun zamanlaması ve atamalarıyla ilgili bilgi verir. Ölçülen kodun neden yavaş çalıştığını incelemek istiyorsanız karşılaştırmaları CPU profilleyici eklenmiş şekilde çalıştırabilirsiniz.

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, StackSampling veya None bağımsız değişkenlerinden biriyle ekleyin.

Seçenekler hakkında daha fazla bilgi için Kayıt yapılandırması seçme başlıklı makaleyi inceleyin. MethodTracing, "Java Yöntemlerini İzleme"nin, StackSampling ise bu dokümanda tanımlandığı şekilde "Java Yöntemlerini Örnekleme"nin 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'daki CPU Profilleyici'de profil oluşturma sonuçlarını incelemek için Dosya > 'ı seçin. İzleri okuma ve anlama hakkında daha fazla bilgi edinmek için İzleri İnceleme başlıklı makaleyi inceleyin.

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.

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ığını ve örnekleme süresini 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.

Yok

Bu bağımsız değişken, profil oluşturma dosyası yakalamaz. Zamanlama ve atamalarla ilgili bilgiler ölçülmeye devam eder.