मेट्रिक मुख्य रूप से आपके मानदंडों से ली गई जानकारी होती है. वे
measureRepeated
को पास कर दिया जाता है
फ़ंक्शन को List
के तौर पर इस्तेमाल करता है, जिससे आपको यह तय करने में मदद मिलती है कि
मेज़र की गई कई मेट्रिक को एक साथ. बेंचमार्क चलाने के लिए, कम से कम एक तरह की मेट्रिक का होना ज़रूरी है.
नीचे दिया गया कोड स्निपेट, फ़्रेम टाइम और कस्टम ट्रेस सेक्शन को कैप्चर करता है मेट्रिक:
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 // ... );
इस उदाहरण में, RV CreateView
और RV OnBindView
, ट्रैक किए जा सकने वाले ब्लॉक के आईडी हैं. इन ब्लॉक के बारे में RecyclerView
में बताया गया है. कॉन्टेंट बनाने
createViewHolder()
का सोर्स कोड
वाले तरीके से, ट्रेस किए जा सकने वाले ब्लॉक को अपने दायरे में रखकर कैसे समझा जा सकता है, इसका एक उदाहरण है
कोड.
StartupTimingMetric
TraceSectionMetric
FrameTimingMetric
और PowerMetric
शामिल हैं
इस दस्तावेज़ में बाद में इस बारे में बताया है.
मानदंड के नतीजे, Android Studio के आउटपुट के तौर पर होते हैं, जैसा कि पहली इमेज में दिखाया गया है. अगर एक से ज़्यादा मेट्रिक तय की गई हैं, तो उन सभी मेट्रिक को आउटपुट में जोड़ दिया जाता है.
Startup समय मेट्रिक
StartupTimingMetric
ऐप्लिकेशन के शुरू होने के समय की मेट्रिक को, इन वैल्यू के साथ कैप्चर करता है:
timeToInitialDisplayMs
: सिस्टम को मिलने वाले समय से लेकर लॉन्च इंटेंट, जब यह डेस्टिनेशन के पहले फ़्रेम को रेंडर करता हैActivity
.timeToFullDisplayMs
: सिस्टम को इस लक्ष्य का इस्तेमाल करके ऐप्लिकेशन की रिपोर्ट पूरी तरह तैयार होने पर,reportFullyDrawn()
तरीका.reportFullyDrawn()
कॉल के बाद या उसमें शामिल पहले फ़्रेम को रेंडर करने के बाद, मेज़रमेंट बंद हो जाता है. यह ऐसा हो सकता है कि मेज़रमेंट की सुविधा, Android 10 (एपीआई लेवल 29) और इससे पहले के वर्शन पर उपलब्ध न हो.
StartupTimingMetric
, स्टार्टअप से कम से कम, मीडियन, और ज़्यादा से ज़्यादा वैल्यू का आउटपुट देता है
बार-बार किया जा सकता है. स्टार्टअप में सुधार का आकलन करने के लिए आपको मीडियन वैल्यू पर फ़ोकस करना चाहिए,
क्योंकि इनसे सामान्य स्टार्टअप समय का सबसे अच्छा अनुमान मिलता है. ज़्यादा के लिए
ऐप्लिकेशन के शुरू होने में लगने वाले समय में किन चीज़ों का योगदान होता है, इसकी जानकारी ऐप्लिकेशन का स्टार्ट होने का समय देखें
समय.
फ़्रेम टाइमिंग मेट्रिक
FrameTimingMetric
एक मानदंड से बने फ़्रेम से समय की जानकारी कैप्चर करता है, जैसे कि
या नीचे दी गई वैल्यू दिखाता है:
frameOverrunMs
: तय समयसीमा के बाद, किसी फ़्रेम में कितनी देर हो सकती है. पॉज़िटिव संख्याएं, फ़्रेम छोड़ने और वीडियो में रुकावट या झटके आने की जानकारी देती हैं. नेगेटिव नंबर से यह पता चलता है कि फ़्रेम, समयसीमा खत्म होने से कितना तेज़ है. ध्यान दें: यह सुविधा सिर्फ़ Android 12 (एपीआई लेवल 31) और इसके बाद के वर्शन पर उपलब्ध है.frameDurationCpuMs
: फ़्रेम को बनने में लगने वाला समय सीपीयू (CPU) को यूज़र इंटरफ़ेस (यूआई) थ्रेड औरRenderThread
, दोनों पर सेव करता है.
ये मेज़रमेंट इस तरीके से इकट्ठा किए जाते हैं: 50वें, 90वें, 95वें, और 99वें हिस्से का डिस्ट्रिब्यूशन पर्सेंटाइल.
धीमे फ़्रेम की पहचान करने और उन्हें बेहतर बनाने के तरीके के बारे में ज़्यादा जानने के लिए, धीमी रेंडरिंग लेख पढ़ें.
TraceSectionMetric
TraceSectionMetric
इससे पता चलता है कि दिए गए sectionName
के साथ मैच करने वाला ट्रैस सेक्शन कितनी बार हुआ और इसमें कितना समय लगा. कुछ समय के लिए, यह सबसे कम
मीडियन और ज़्यादा से ज़्यादा बार मिलीसेकंड में. ट्रेस सेक्शन में
फ़ंक्शन कॉल के हिसाब से
trace(sectionName)
या कोड के बीच में
Trace.beginSection(sectionName)
और
Trace.endSection()
या
एक साथ काम नहीं करने वाले वैरिएंट हैं. यह हमेशा, ट्रेस सेक्शन का पहला इंस्टेंस चुनता है
माप के दौरान कैप्चर किया गया. इससे, आपके पैकेज से सिर्फ़ ट्रेस सेक्शन की जानकारी मिलती है
डिफ़ॉल्ट रूप से; अपने पैकेज से बाहर की प्रक्रियाओं को शामिल करने के लिए, सेट करें
targetPackageOnly = false
.
ट्रैकिंग के बारे में ज़्यादा जानकारी के लिए, सिस्टम ट्रैकिंग की खास जानकारी और पसंद के मुताबिक इवेंट तय करना लेख पढ़ें.
पावरमेट्रिक
PowerMetric
मीडिया आइटम
दिए गए डेटा के लिए, आपके टेस्ट के दौरान पावर या ऊर्जा में बदलाव
पावर की कैटगरी.
चुनी गई हर कैटगरी को, मेज़र किए जा सकने वाले सबकॉम्पोनेंट में बांटा जाता है और
नहीं चुनी गई कैटगरी "नहीं चुनी गई" में जोड़ दी जाती हैं मेट्रिक के हिसाब से फ़िल्टर करें.
ये मेट्रिक किसी एक ऐप्लिकेशन के हिसाब से इस्तेमाल न किया जाता हो, न कि पूरे सिस्टम में होने वाला उपभोग, और ये सीमित होते हैं Pixel 6, Pixel 6 Pro, और उसके बाद के वर्शन वाले डिवाइसों के लिए:
power<category>Uw
: इस अवधि के दौरान बिजली की खपत इस कैटगरी में टेस्ट करें.energy<category>Uws
: यह इस कैटगरी में आपके टेस्ट की अवधि.
कैटगरी में ये शामिल हैं:
CPU
DISPLAY
GPU
GPS
MEMORY
MACHINE_LEARNING
NETWORK
UNCATEGORIZED
CPU
जैसी कुछ कैटगरी में, इनके काम को अलग-अलग करना मुश्किल हो सकता है
आपके ऐप्लिकेशन की ओर से की गई काम की अन्य प्रक्रियाओं को शामिल करता है. रुकावट को कम करने के लिए,
ग़ैर-ज़रूरी ऐप्लिकेशन और खातों को हटाना या उन पर पाबंदी लगाना.
आपके लिए सुझाव
- ध्यान दें: JavaScript बंद होने पर लिंक टेक्स्ट दिखता है
- बेसलाइन प्रोफ़ाइलें बनाना {:#creating-profile-rules}
- मैक्रोबेंचमार्क लिखना
- ऐप्लिकेशन के स्टार्टअप का विश्लेषण और ऑप्टिमाइज़ेशन {:#app-startup-analysis-optimization}