Kavramlar ve Jetpack Compose uygulaması
Metrikler, karşılaştırmalarınızdan çıkarılan temel bilgi türüdür. Bu metrikler, measureRepeated işlevine List olarak iletilir. Bu sayede, aynı anda birden fazla ölçülen metrik belirtebilirsiniz. Karşılaştırmanın çalışması için en az bir metrik türü gereklidir.
Aşağıdaki kod snippet'i, kare zamanlaması ve özel izleme bölümü metriklerini yakalar:
Kotlin
benchmarkRule.measureRepeated(
packageName = TARGET_PACKAGE,
metrics = listOf(
FrameTimingMetric(),
TraceSectionMetric("RV CreateView"),
TraceSectionMetric("RV OnBindView"),
),
iterations = 5,
// ...
)
Java
benchmarkRule.measureRepeated(
TARGET_PACKAGE, // packageName
Arrays.asList( // metrics
new StartupTimingMetric(),
new TraceSectionMetric("RV CreateView"),
new TraceSectionMetric("RV OnBindView"),
),
5, // Iterations
// ...
);
Bu örnekte, RV CreateView ve RV OnBindView, RecyclerView içinde tanımlanan izlenebilir blokların kimlikleridir. createViewHolder() yönteminin kaynak kodu
, kendi kodunuzda
izlenebilir blokları nasıl tanımlayabileceğinize dair bir örnektir.
StartupTimingMetric, TraceSectionMetric ve
FrameTimingMetric bu belgenin ilerleyen bölümlerinde ayrıntılı olarak ele alınmaktadır. Metriklerin tam listesi için Metric alt sınıflarına göz atın.
Karşılaştırma sonuçları, Şekil 1'de gösterildiği gibi Android Studio'ya aktarılır. Birden fazla metrik tanımlanırsa bunların tümü çıkışta birleştirilir.
TraceSectionMetric ve
FrameTimingMetric sonuçları.StartupTimingMetric
StartupTimingMetric, uygulama başlatma zamanlaması metriklerini aşağıdaki değerlerle yakalar:
timeToInitialDisplayMs: Sistem bir başlatma amaçlı isteği aldığında hedefActivityilk karesini oluşturana kadar geçen süre.timeToFullDisplayMs: Sistem bir başlatma amacı aldığında geçen süreden, uygulamareportFullyDrawn()yöntemini kullanarak tamamen çizildiğini bildirene kadar geçen süre. Ölçüm, çağrısından sonraki veyareportFullyDrawn()çağrısını içeren ilk karenin oluşturulması tamamlandığında durur. Bu ölçüm, Android 10 (API düzeyi 29) ve önceki sürümlerde kullanılamayabilir.
StartupTimingMetric, başlangıç yinelemelerindeki minimum, medyan ve maksimum değerleri verir. Başlatma iyileştirmesini değerlendirmek için her zaman ortanca değerlere odaklanın. Çünkü bu değerler, tipik kullanıcı başlatma süreleriyle ilgili en iyi tahmini sağlar. Uygulama başlatma süresine katkıda bulunan faktörler hakkında daha fazla bilgi için Uygulama başlatma süresi başlıklı makaleyi inceleyin.
StartupTimingMetric sonuçlar.FrameTimingMetric
FrameTimingMetric, kaydırma veya animasyon gibi bir karşılaştırma ölçütü tarafından üretilen karelerden zamanlama bilgilerini alır ve aşağıdaki değerleri verir:
frameOverrunMs: Belirli bir karenin son tarihi kaçırdığı süre. Pozitif sayılar, görünür duraklama veya takılma ile birlikte kare düşmesini gösterir. Negatif sayılar, bir karenin alt sistem donanım son tarihine kıyasla ne kadar daha hızlı tamamlandığını gösterir. Not: Bu metrik yalnızca Android 12 (API düzeyi 31) ve sonraki sürümlerde kullanılabilir.frameDurationCpuMs: Karelerin hem kullanıcı arayüzü iş parçacığında hem deRenderThread'de CPU üzerinde oluşturulması için geçen süre.
Bu ölçümler 50., 90., 95. ve 99. yüzdelik dilim dağılımı şeklinde toplanır.
Yavaş kareleri belirleme ve iyileştirme hakkında daha fazla bilgi için Yavaş oluşturma başlıklı makaleyi inceleyin.
FrameTimingMetric sonuçlar.TraceSectionMetric
TraceSectionMetric, belirli bir izleme bölümünün kaç kez gerçekleştiğini ve yürütülmesinin ne kadar sürdüğünü gösterir. Süre takibi için minimum, ortalama ve maksimum süreleri milisaniye cinsinden verir.
Hedef izleme bölümü, trace(sectionName) işlev çağrısıyla veya Trace.beginSection(sectionName) ile Trace.endSection() arasındaki alt düzey blok sınırlarıyla ya da bunların eşzamansız varyantlarıyla tanımlanır. Ölçüm sırasında yakalanan bir izleme bölümünün ilk örneğini her zaman seçer. Varsayılan olarak yalnızca paketinizdeki izleme bölümlerini çıkarır. Paketinizin dışındaki işlemleri dahil etmek için targetPackageOnly =
false değerini ayarlayın.
İzleme hakkında daha fazla bilgi için Sistem izlemeye genel bakış ve Özel etkinlikler tanımlama başlıklı makaleleri inceleyin.
TraceSectionMetric sonuçlar.Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir.
- Temel profiller oluşturma {:#creating-profile-rules}
- Makro karşılaştırma testi yazma
- Uygulama başlatma analizi ve optimizasyonu {:#app-startup-analysis-optimization}