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.
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.
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir.
- Mikro karşılaştırma enstrümantasyon bağımsız değişkenleri
- Sürekli entegrasyonda karşılaştırma testleri çalıştırma