Metrikler, karşılaştırmalarınızdan elde edilen temel bilgi türüdür. Onlar
measureRepeated
bir List
işlevi görür; bu anahtar,
birçok metriği kullanabilirsiniz. Şu metrik için en az bir metrik türü gereklidir:
pek çok yolu vardır.
Aşağıdaki kod snippet'i, kare zamanlamasını ve özel iz bölümünü yakalar metrikler:
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
aşağıdaki tabloda tanımlanan izlenebilir blokların kimlikleridir:
RecyclerView
. İlgili içeriği oluşturmak için kullanılan
createViewHolder()
için kaynak kodu
yöntemi, kendi özgeçmişinizdeki izlenebilir blokları nasıl tanımlayabileceğinize
girin.
StartupTimingMetric
TraceSectionMetric
,
FrameTimingMetric
ve PowerMetric
daha ayrıntılı değineceğiz.
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ı.](https://developer.android.google.cn/static/topic/performance/images/benchmark_images/macrobenchmark_results_frames_tracing.png?authuser=8&hl=tr)
TraceSectionMetric
ve sonuçlar
FrameTimingMetric
.StartupTimingMetric
StartupTimingMetric
aşağıdaki değerlere sahip uygulama başlatma zamanlaması metriklerini yakalar:
timeToInitialDisplayMs
: Sistemin verileri aldığı andan itibaren geçen süredir. hedefin ilk karesini oluşturulduğunda başlatma amacıActivity
timeToFullDisplayMs
: Sistemin bir istek almaya başlamasından itibaren uygulamanın rapor oluşturma amacı kullanılarak tamamen çizilmesireportFullyDrawn()
yöntemidir. İlk kare oluşturulduktan sonra ölçüm dururreportFullyDrawn()
görüşmesinden sonra veya sonrasında Bu Ölçüm özelliği, Android 10 (API düzeyi 29) ve önceki sürümlerde kullanılamayabilir.
StartupTimingMetric
, başlangıçtaki minimum, ortanca ve maks. değerleri bildirir
iterasyonlar ile
yürütüldüğü anlamına gelir. Startup'lardaki iyileşmeyi değerlendirmek için ortanca değerlere,
çünkü tipik başlatma süresine ilişkin en iyi tahmini sağlarlar. Daha fazla
uygulama başlatma süresine neyin katkıda bulunduğu hakkında daha fazla bilgi için bkz. Uygulama başlatma
zaman ekleyin.
![StartupTimingMetric sonuçları](https://developer.android.google.cn/static/topic/performance/images/benchmark_images/macrobenchmark_results_fully_drawn_startup.png?authuser=8&hl=tr)
StartupTimingMetric
sonuç.FrameTimingMetric
FrameTimingMetric
Bir karşılaştırma tarafından üretilen karelerden zamanlama bilgilerini yakalar (örneğin,
kaydırmayı veya animasyonu gösterir ve aşağıdaki değerleri çıkarır:
frameOverrunMs
: Belirli bir karenin teslim tarihini kaçırdığı süre. Pozitif sayılar, atlanmış bir kare ve görünür olumsuzluk veya takılmayı belirtir. Negatif sayılar, bir karenin son tarihten ne kadar hızlı olduğunu gösterir. Not: Bu özellik, yalnızca Android 12 (API düzeyi 31) ve sonraki sürümlerde kullanılabilir.frameDurationCpuMs
: karenin üretilmesi için gereken süre hem kullanıcı arayüzü iş parçacığı hem deRenderThread
üzerindeki CPU.
Bu ölçümler, 50., 90., 95. ve 99. dağılımlar halinde toplanır. yüzdelik dilim.
Yavaş kareleri belirleme ve iyileştirme hakkında daha fazla bilgi için şuraya bakın: Yavaş oluşturma.
![FrameTimingMetric sonuçları](https://developer.android.google.cn/static/topic/performance/images/benchmark_images/macrobenchmark_results_frames.png?authuser=8&hl=tr)
FrameTimingMetric
sonuç.TraceSectionMetric
TraceSectionMetric
sağlanan sectionName
ile eşleşen iz bölümünün sayısını yakalar.
gereken zaman dilimini ölçtüğünden emin olun. Öğrendikleri için minimum değeri verir,
ortanca değeri ve milisaniye cinsinden maksimum süre. İz bölümü,
(fonksiyon çağrısıyla)
trace(sectionName)
veya
Trace.beginSection(sectionName)
ve
Trace.endSection()
veya
eşzamansız varyantları. Her zaman iz bölümünün ilk örneğini seçer
otomatik olarak yakalar. Yalnızca paketinizdeki iz bölümlerinin çıktısını verir
Varsayılan olarak dahil etmek için bazı
targetPackageOnly = false
İzleme hakkında daha fazla bilgi için, bkz. Sisteme genel bakış izleme ve Özel tanımla etkinlikler ile ilgili daha fazla bilgi edinin.
![TraceSectionMetric](https://developer.android.google.cn/static/topic/performance/images/benchmark_images/macrobenchmark_results_tracing.png?authuser=8&hl=tr)
TraceSectionMetric
sonuç.GüçMetriği
PowerMetric
yakalama
sağlanan alan için testiniz süresince güç veya enerji değişimi
güç kategorileri.
Seçilen her kategori, ölçülebilir alt bileşenlerine ayrılır ve
seçilmemiş kategoriler, "seçilmeyenler" bölümüne eklenir metriğine karşılık gelir.
Bu metrikler, uygulama başına değil, sistem genelinde tüketimdir ve sınırlıdır Pixel 6, Pixel 6 Pro ve sonraki model cihazlara yükseltme:
power<category>Uw
: oluşturma işleminiz boyunca tüketilen güç miktarı test edebilirler.energy<category>Uws
: için zaman birimi başına aktarılan enerji miktarı testinizin süresini gösterir.
Kategoriler aşağıdakileri içerir:
CPU
DISPLAY
GPU
GPS
MEMORY
MACHINE_LEARNING
NETWORK
UNCATEGORIZED
CPU
gibi bazı kategorilerde, yapılan işleri ekip üyelerine göre ayırmak zor olabilir.
diğer işlemler de dahil edilir. Paraziti en aza indirmek için
Gereksiz uygulamaları ve hesapları kaldırabilir ya da kısıtlayabilir.
![PowerMetric sonuçları](https://developer.android.google.cn/static/topic/performance/images/benchmark_images/macrobenchmark_results_power.png?authuser=8&hl=tr)
PowerMetric
sonuç.Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir
- Temel Profiller Oluşturma {:#create-profile-rules}
- Macrobenchmark yazma
- Uygulama başlatma analizi ve optimizasyonu {:#app-startup-analysis-OPT}