Metrikler, karşılaştırmalarınızdan elde edilen temel bilgi türüdür. Bunlar, measureRepeated
işlevine List
olarak iletilir. Bu sayede, aynı anda birden fazla ölçülen metrik belirtebilirsiniz. Şu metrik için en az bir metrik türü gereklidir:
pek çok yolu vardır.
Aşağıdaki kod snippet'inde kare zamanlaması ve özel izleme bölümü metrikleri yakalanır:
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
, bu dokümanın ilerleyen bölümlerinde ayrıntılı olarak ele alınmaktadı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ü çıktıda birleştirilir.
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, 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.
FrameTimingMetric
FrameTimingMetric
, bir karşılaştırma tarafından oluşturulan karelerden (ör. kaydırma veya animasyon) zamanlama bilgilerini yakalar ve aşağıdaki değerleri döndürü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. yüzdelik dilim dağılımında toplanır.
Yavaş kareleri belirleme ve iyileştirme hakkında daha fazla bilgi için şuraya bakın: Yavaş oluşturma.
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. Süre için milisaniye cinsinden minimum, medyan ve maksimum süreleri döndürür. İ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. Varsayılan olarak yalnızca paketinizdeki izleme bölümlerini gösterir. Paketinizin dışındaki işlemleri dahil etmek için targetPackageOnly = false
değerini ayarlayın.
İzleme hakkında daha fazla bilgi için, bkz. Sisteme genel bakış izleme ve Özel tanımla etkinlikler ile ilgili daha fazla bilgi edinin.
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.
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-optimization}