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
, FrameTimingMetric
ve PowerMetric
, 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
Aşağıdaki değerlerle uygulama başlatma zamanlaması metriklerini yakalar:
timeToInitialDisplayMs
: Sistemin bir başlatma isteği aldığı andan hedefteki ilk kareyi oluşturduğu ana kadar geçen süreActivity
.timeToFullDisplayMs
: Sistem bir başlatma amacı aldığında geçen süreden, uygulamanınreportFullyDrawn()
yöntemi kullanılarak tamamen çizildiğini bildirdiği zamana kadar geçen süre. Ölçüm,reportFullyDrawn()
ç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 süresindeki iyileşmeyi değerlendirmek için ortanca değerlere odaklanmanız gerekir. Çünkü ortanca değerler, tipik başlatma süresinin en iyi tahminini 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
Bir karşılaştırma testi tarafından üretilen karelerden (ör. kaydırma veya animasyon) zamanlama bilgilerini alır ve aşağıdaki değerleri verir:
frameOverrunMs
: Belirli bir karenin son tarihi ne kadar süreyle kaçırdığı. Pozitif sayılar, kare düşmesi ve görünür titreme veya takılma olduğunu gösterir. 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
: Karelerin hem kullanıcı arayüzü iş parçacığında hem deRenderThread
üzerinde CPU'da oluşturulması için gereken 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
Belirtilen sectionName
ile eşleşen bir iz bölümünün kaç kez gerçekleştiğini ve ne kadar sürdüğünü gösterir. Süre için minimum, medyan ve maksimum süreleri milisaniye cinsinden verir. İzleme bölümü, işlev çağrısı trace(sectionName)
veya Trace.beginSection(sectionName)
ile Trace.endSection()
arasındaki kod ya da bunların asenkron varyantları tarafından 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 etkinlikleri tanımlama başlıklı makaleleri inceleyin.

TraceSectionMetric
sonuçlar.PowerMetric
PowerMetric
, sağlanan güç kategorileri için testiniz süresince güç veya enerjideki değişimi yakalar.
Seçilen her kategori, ölçülebilir alt bileşenlerine ayrılır. Seçilmeyen kategoriler ise "seçilmeyen" metriğine eklenir.
Bu metrikler, uygulama bazında tüketimi değil sistem genelindeki tüketimi ölçer ve Pixel 6, Pixel 6 Pro ve sonraki modellerle sınırlıdır:
power<category>Uw
: Bu kategorideki testiniz süresince tüketilen güç miktarı.energy<category>Uws
: Bu kategorideki testiniz süresince birim zaman başına aktarılan enerji miktarı.
Kategoriler arasında şunlar yer alır:
CPU
DISPLAY
GPU
GPS
MEMORY
MACHINE_LEARNING
NETWORK
UNCATEGORIZED
CPU
gibi bazı kategorilerde, diğer işlemlerin yaptığı işi kendi uygulamanızın yaptığı işten ayırmak zor olabilir. Girişimi en aza indirmek için gereksiz uygulamaları ve hesapları kaldırın veya kısıtlayın.

PowerMetric
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}