Metrikler, karşılaştırmalarınızdan elde edilen ana bilgi türüdür. Bunlar, measureRepeated
işlevine List
olarak aktarılır ve tek seferde birden fazla ölçülen metrik belirtmenize olanak tanır. Karşılaştırmanın çalışması için en az bir metrik türü gereklidir.
Aşağıdaki kod snippet'i, kare zamanlamasını ve özel iz 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ğinizi gösteren bir örnektir.
StartupTimingMetric
,
TraceSectionMetric
,
FrameTimingMetric
ve PowerMetric
bu belgenin ilerleyen kısımlarında ayrıntılı olarak ele alınmıştır.
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.
BaşlangıçZamanlamasıMetriği
StartupTimingMetric
, uygulama başlatma zamanlaması metriklerini aşağıdaki değerlerle yakalar:
timeToInitialDisplayMs
: Sistemin başlatma amacı alması ile hedefin ilk karesini oluşturması arasında geçen süreActivity
.timeToFullDisplayMs
: Sistemin başlatma amacı alması ile uygulama raporlarınınreportFullyDrawn()
yöntemi kullanılarak tamamen çizilmesine kadar geçen süre. Ölçüm,reportFullyDrawn()
çağrısından sonraki veya onu 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ıç yinelemelerinden minimum, medyan ve maksimum değerleri verir. Ortalama değerler tipik başlangıç süresi için en iyi tahmini sağladıklarından, başlangıçtaki iyileştirmeyi değerlendirirken ortanca değerlere odaklanmalısınız. Uygulamaların başlatma süresine nelerin katkıda bulunduğu hakkında daha fazla bilgi için Uygulama başlatma süresi bölümüne bakın.
KareZamanlama Metriği
FrameTimingMetric
, bir karşılaştırma tarafından oluşturulan karelerden (kaydırma veya animasyon gibi) zamanlama bilgilerini yakalar ve şu değerleri verir:
frameOverrunMs
: Belirli bir karenin son teslim tarihini kaçırdığı süre. Pozitif sayılar bir karenin düştüğünü ve görünür duraklama 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 hem kullanıcı arayüzü iş parçacığı hem deRenderThread
üzerindeki CPU'da oluşturulma süresi.
Bu ölçümler yüzde 50, 90, 95 ve 99. yüzdelik dilim şeklinde toplanır.
Yavaş kareleri belirleme ve iyileştirme hakkında daha fazla bilgi edinmek için Yavaş oluşturma bölümüne bakın.
İzBölümMetriği
TraceSectionMetric
, sağlanan sectionName
ile eşleşen bir iz bölümünün kaç kez gerçekleştiğini ve ne kadar sürdüğünü yakalar. Zaman için minimum, ortanca ve maksimum süre değerlerini milisaniye cinsinden verir. İz bölümü, trace(sectionName)
işlev çağrısı veya Trace.beginSection(sectionName)
ile Trace.endSection()
arasındaki kod ya da bunların eşzamansız varyantları tarafından tanımlanır. Her zaman bir ölçüm sırasında yakalanan iz bölümünün ilk örneğini seçer. Varsayılan olarak paketinizden yalnızca iz 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 bölümlerine göz atın.
Güç Metriği
PowerMetric
, sağlanan güç kategorileri için testiniz boyunca güç veya enerji değişimini gösterir.
Seçilen her kategori, ölçülebilir alt bileşenlerine ayrılır ve seçilmeyen kategoriler "seçilmemiş" metriğine eklenir.
Bu metrikler, tüketimi uygulama bazında değil, sistem genelindeki tüketimi ölçer. Bu metrikler Pixel 6, Pixel 6 Pro ve sonraki model cihazlarla sınırlıdır:
power<category>Uw
: Bu kategorideki testiniz boyunca tüketilen güç miktarı.energy<category>Uws
: Bu kategorideki testiniz boyunca zaman birimi başına aktarılan enerji miktarı.
Kategoriler aşağıdakileri içerir:
CPU
DISPLAY
GPU
GPS
MEMORY
MACHINE_LEARNING
NETWORK
UNCATEGORIZED
CPU
gibi bazı kategorilerde, başka işlemler tarafından yapılan işleri kendi uygulamanızın yaptığı işlerden ayırmak zor olabilir. Paraziti en aza indirmek için gereksiz uygulamaları ve hesapları kaldırın veya kısıtlayın.
Sizin için önerilenler
- Not: Bağlantı metni JavaScript kapalıyken görüntülenir
- Temel Profiller Oluşturma {:#creating-profile-rules}
- Makrobenchmark yazma
- Uygulama startup analizi ve optimizasyonu {:#app-startup-analysis-optimization}