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.
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.
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir
- Mikro Karşılaştırma Enstrümantasyon Argümanları
- Sürekli entegrasyonda karşılaştırma çalıştırma