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ı araştırmak isterseniz karşılaştırmaları CPU profil aracı ekleyerek çalıştırabilirsiniz.

Profilleyici yapılandırmasını seçmek için aşağıdaki snippet'te gösterildiği gibi MethodTracing, StackSampling veya None bağımsız değişkenlerinden biriyle birlikte enstrümantasyon çalıştırıcı bağımsız değişkeni androidx.benchmark.profiling.mode 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.

Eski

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 Profiler'da 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. Bu nedenle testiniz hem doğru zamanlama hem de profil çıkarma sonuçları verir.

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 ayırmayla ilgili bilgiler yine de ölçülmektedir.