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 > Aç'ı 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.
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 çalıştırma