বেঞ্চমার্ক
| লেটেস্ট আপডেট | স্টেবল রিলিজ | রিলিজ ক্যান্ডিডেট | বিটা রিলিজ | আলফা রিলিজ |
|---|---|---|---|---|
| ৭ অক্টোবর, ২০২৬ | 1.5.0 | - | - | 1.6.0-alpha01 |
ডিপেন্ডেন্সি ঘোষণা করা
Benchmark-এ কোনও ডিপেন্ডেন্সি যোগ করতে হলে, আপনাকে অবশ্যই নিজের প্রোজেক্টে Google Maven রিপোজিটরি যোগ করতে হবে। আরও তথ্যের জন্য Google-এর Maven রিপোজিটরি পড়ুন।
Macrobenchmark
আপনার প্রোজেক্টে ম্যাক্রোবেঞ্চমার্ক
ব্যবহার করতে, আপনার build.gradle ফাইলে
আপনার
ম্যাক্রোবেঞ্চমার্ক মডিউলের জন্য নিম্নলিখিত ডিপেন্ডেন্সি যোগ করুন:
গ্রোভি
dependencies { androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.5.0" }
কোটলিন
dependencies { androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.5.0") }
মাইক্রোবেঞ্চমার্ক
আপনার প্রোজেক্টে মাইক্রোবেঞ্চমার্ক
ব্যবহার করতে, আপনার build.gradle ফাইলের মধ্যে
আপনার
মাইক্রোবেঞ্চমার্ক মডিউলের জন্য
নিম্নলিখিত ডিপেন্ডেন্সি যোগ করুন:
গ্রোভি
dependencies { androidTestImplementation "androidx.benchmark:benchmark-junit4:1.5.0" } android { ... defaultConfig { ... testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
কোটলিন
dependencies { androidTestImplementation("androidx.benchmark:benchmark-junit4:1.5.0") } android { ... defaultConfig { ... testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
মাইক্রোবেঞ্চমার্ক লাইব্রেরি আপনার মাইক্রোবেঞ্চমার্ক মডিউলের সাথে ব্যবহার করার জন্য একটি গ্রেডল প্লাগইনও প্রদান করে। এই প্লাগইনটি মডিউলের জন্য বিল্ড কনফিগারেশন ডিফল্ট সেট করে, হোস্টে বেঞ্চমার্ক আউটপুট কপি সেট আপ করে এবং ./gradlew lockClocks টাস্ক প্রদান করে।
প্লাগইন ব্যবহার করতে, আপনার শীর্ষ-স্তরের build.gradle ফাইলে `plugins` ব্লকে নিম্নলিখিত লাইনটি অন্তর্ভুক্ত করুন:
গ্রোভি
plugins { id 'androidx.benchmark' version '1.5.0' apply false }
কোটলিন
plugins { id("androidx.benchmark") version "1.5.0" apply false }
তারপর প্লাগইনটি আপনার বেঞ্চমার্ক মডিউলের build.gradle ফাইলে প্রয়োগ করুন
গ্রোভি
plugins { id 'androidx.benchmark' }
কোটলিন
plugins { id("androidx.benchmark") }
মতামত
আপনার মতামত Jetpack-কে আরও ভাল করে তুলতে সাহায্য করে। আপনি নতুন কোনও সমস্যা খুঁজে পেলে বা এই লাইব্রেরি উন্নত করার জন্য কোনও আইডিয়া থাকলে, আমাদের জানান। নতুন লাইব্রেরি তৈরি করার আগে এই লাইব্রেরিতে আগে থেকে থাকা সমস্যা দেখে নিন। আপনি তারকাচিহ্ন বোতামে ক্লিক করে আগে থেকে থাকা কোনও সমস্যাতে আপনার ভোট যোগ করতে পারবেন।
আরও তথ্যের জন্য ইস্যু ট্র্যাকার ডকুমেন্টেশন দেখুন।
ভার্সন 1.6
ভার্সন 1.6.0-alpha01
৭ অক্টোবর, ২০২৬
androidx.benchmark:benchmark-*:1.6.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 1.6.0-alpha01-এ এইসব কমিট রয়েছে।
নতুন ফিচার
- বেঞ্চমার্ক
:lockClocksটাস্ক এখন উপলভ্য হলে, আগের শুধুমাত্র রুট অ্যাক্সেস সহ প্রয়োগের পরিবর্তে, ফিক্সড পারফর্ম্যান্স মোড ব্যবহার করে। এর অর্থ হল, আপনি আরও অনেক ফিজিক্যাল ডিভাইসে ক্লক লক করতে পারবেন, বিশেষ করে স্থিতিশীল মাইক্রোবেঞ্চমার্কের জন্য এটি খুবই উপযোগী। থার্মাল থ্রটলিংয়ের নতুন আচরণে কোনও সমস্যা দেখতে পেলে, সেই সম্পর্কে অভিযোগ জানান। (I0d032)
API-তে পরিবর্তন
- Perfetto হিপ প্রোফাইলিংয়ে ম্যাক্রোবেঞ্চমার্ক রানকে অপ্ট-ইন করার অনুমতি দিতে
ExperimentalConfig-এMemoryProfilingConfigযোগ করা হয়েছে। (Ibc931)
সমস্যার সমাধান
- মাইক্রোবেঞ্চমার্কে একটি সমস্যার সমাধান করা হয়েছে যেখানে ANR এড়াতে মেথড ট্রেস ক্যাপচার কখনও কখনও অতিরিক্ত সতর্কতার সাথে এড়িয়ে যাওয়া হয়েছিল। (Ifc307)
:<suffix>নামকরণের প্যাটার্ন ব্যবহার না করা প্রসেসের জন্য বেসলাইন প্রোফাইল ক্যাপচার সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (I512ab)- প্রোফাইলার ট্রেস লিঙ্ক এখন IDE সারসংক্ষেপের একটি পৃথক 'প্রোফাইলিং ট্রেস' বিভাগে রিপোর্ট করা হয়। (Id639f)
- ভার্চুয়াল ফাইল ফ্লাশিংয়ের বাগ সংক্রান্ত সমস্যার সমাধান করুন যার ফলে
Unable to flush profiles for <packagename>হবে। (I48ccc) - সিস্টেম ট্রেসে এম্বেড করা মেথড ট্রেসে সিঙ্ক্রোনাইজেশন সংক্রান্ত সমস্যার সমাধান করুন। Ifd2e33 b/537688349
- বেসলাইন প্রোফাইল Gradle প্লাগ-ইন -
CollectBaselineProfileTaskসাবডিরেক্টরি থেকেtest-result.pbফাইল খুঁজে পাওয়ার সুবিধা যোগ করা হয়েছে, এর ফলে নতুন বিল্ট-ইন টেস্ট প্ল্যাটফর্মের সাথে কম্প্যাটিবিলিটি চালু করা যায়। Id9c488 b/543799367
ভার্সন ১.৫
ভার্সন 1.5.0
সেপ্টেম্বর 09, 2026
androidx.benchmark:benchmark-*:1.5.0 রিলিজ করা হয়েছে। 1.5.0 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.5.0-rc02
২৬ আগস্ট, ২০২৬
androidx.benchmark:benchmark-*:1.5.0-rc02 রিলিজ করা হয়েছে। 1.5.0-rc02 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.5.0-rc01
১২ আগস্ট, ২০২৬
androidx.benchmark:benchmark-*:1.5.0-rc01 রিলিজ করা হয়েছে। 1.5.0-rc01 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.5.0-beta01
২৯ জুলাই, ২০২৬
androidx.benchmark:benchmark-*:1.5.0-beta01 রিলিজ করা হয়েছে। 1.5.0-beta01 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
PerfettoCaptureএবংPerfettoTraceRuleএখন প্রসেস চলাকালীন ট্রেস ক্যাপচার করতে এবং টার্গেট প্যাকেজের জন্য সেগুলি মার্জ করতে পারে। (I9a00b, b/497959820)
Version 1.5.0-alpha07
১ জুলাই, ২০২৬
androidx.benchmark:benchmark-*:1.5.0-alpha07 রিলিজ করা হয়েছে। 1.5.0-alpha07 ভার্সনে এইসব কমিট আছে।
API-তে পরিবর্তন
- ডিভাইসে Perfetto ট্রেস ক্যাপচার করার সহজ পদ্ধতি। (I48810)
- পরীক্ষামূলক
TraceProcessor.runServerএক্সটেনশন API-কেandroidx.benchmark:benchmark-macroথেকেandroidx.benchmark:benchmark-commonএবংandroidx.benchmarkপ্যাকেজে সরান। এর ফলে ভবিষ্যতে মাইক্রোবেঞ্চমার্কে এগুলি ব্যবহার করা যাবে। (Ie25bb, b/393640753)
সমস্যার সমাধান
- Perfetto v56.0 (I8fb9d) ব্যবহার করার জন্য traceprocessor ইমপ্লিমেন্টেশন (সেইসাথে আনবান্ডেল করা Perfetto Trace ক্যাপচার) আপডেট করুন
- ডিফল্ট হিসেবে
androidx.benchmark.requireAotএবংandroidx.benchmark.requireAotসঠিক হিসেবে সেট করুন। এইসব নিরাপদ ডিফল্ট নিশ্চিত করে যে মাইক্রোবেঞ্চমার্ক চালানোর আগে কম্পাইলেশন করা হয়েছে (AGP 8.4+ ব্যবহার করার সময় বেঞ্চমার্ক গ্রেডেল প্লাগ-ইনের সাথে ডিফল্ট হিসেবে চালু থাকে), এবংmeasureRepeatedমূল থ্রেডে ব্যবহার করা হয় না, যেখানে এটি ANR-এর কারণ হতে পারে। (I1bc3c, b/379115078) - Perfetto কিল টাইমআউট ৫ থেকে ৩০ সেকেন্ডে বাড়ানো হয়েছে (শুধুমাত্র বেঞ্চমার্ক ক্যাপচার করা Perfetto সেশনের জন্য)। সমস্যা হলে, আরও স্পষ্ট ত্রুটি লগিং যোগ করা হয়েছে। (If188f, b/435589290)
Version 1.5.0-alpha06
৬ মে, ২০২৬
androidx.benchmark:benchmark-*:1.5.0-alpha06 রিলিজ করা হয়েছে। 1.5.0-alpha06 ভার্সনে এইসব কমিট আছে।
সমস্যার সমাধান
- বেঞ্চমার্ক আউটপুট ডিরেক্টরি থেকে অতিরিক্ত টেস্ট আউটপুট ডিরেক্টরিতে ফাইল সরানোর সময় মাল্টি-ইউজার এনভায়রনমেন্ট সুন্দরভাবে ম্যানেজ করুন। (I90da5, b/489358149)
ভার্সন 1.5.0-alpha05
২৫ মার্চ, ২০২৬
androidx.benchmark:benchmark-*:1.5.0-alpha05 রিলিজ করা হয়েছে। 1.5.0-alpha05 ভার্সনে এইসব কমিট রয়েছে।
সমস্যার সমাধান
ArtMetricটপ-লেভেল প্যাকেজকে অন্তর্ভুক্ত করার জন্য আপডেট করা হয়েছে, বিশেষ করে AGP/R8 9.1+ বা-repackageclassesগ্লোবাল বিকল্প ব্যবহার করার সময় এটি গুরুত্বপূর্ণ। আগে,ArtMetricতারartClassLoad...পরিমাপে এই ক্লাসলোডগুলি শনাক্ত করতে ব্যর্থ হত। (If8a35, b/487402058)
নতুন ফিচার
- একটি নতুন ইন্সট্রুমেন্টেশন আর্গুমেন্ট androidx.benchmark.requireLockedClocks যোগ করা হয়েছে যা রুটেড ডিভাইসের জন্য CPU ক্লক লক করা আছে কিনা তা চেক করার সুবিধা চালু করার অনুমতি দেয়। (Id82e8, b/468039042)
ভার্সন 1.5.0-alpha04
১১ মার্চ, ২০২৬
androidx.benchmark:benchmark-*:1.5.0-alpha04 রিলিজ করা হয়েছে। ভার্সন 1.5.0-alpha04-এ এইসব কমিট আছে।
API-তে পরিবর্তন
PowerMetric.EnergyওPowerMetric.Power-এJvmOverloadsযোগ করা হয়েছে (Iac0d0, b/481371562)।
সমস্যার সমাধান
ArtMetricটপ-লেভেল প্যাকেজকে অন্তর্ভুক্ত করার জন্য আপডেট করা হয়েছে, বিশেষ করে AGP/R8 9.1+ বা-repackageclassesগ্লোবাল বিকল্প ব্যবহার করার সময় এটি গুরুত্বপূর্ণ। আগে,ArtMetricতারartClassLoad...পরিমাপে এই ক্লাসলোডগুলি শনাক্ত করতে ব্যর্থ হত। (I207ca, b/487402058)
Version 1.5.0-alpha03
১১ ফেব্রুয়ারি, ২০২৬
androidx.benchmark:benchmark-*:1.5.0-alpha03 রিলিজ করা হয়েছে। 1.5.0-alpha03 ভার্সনে এইসব কমিট আছে।
- UiAutomator 2.4 বিটার উপর নির্ভর করার জন্য আপডেট করা হয়েছে।
ভার্সন 1.5.0-alpha02
২৮ জানুয়ারি, ২০২৬
androidx.benchmark:benchmark-*:1.5.0-alpha02 রিলিজ করা হয়েছে। 1.5.0-alpha02 ভার্সনে এইসব কমিট রয়েছে।
সমস্যার সমাধান
Kotlin মাল্টি-প্ল্যাটফর্ম মডিউলের জন্য বেসলাইন প্রোফাইল জেনারেশনের জন্য আংশিক সহায়তা যোগ করুন। সাধারণত, প্রোফাইলের উপর নির্ভরতা
baselineProfileনির্ভরতা ব্লকে Gradle কনফিগারেশন ব্যবহার করে নির্ধারণ করা যেতে পারে, তবে এটি বর্তমানে KMP মডিউলের জন্য কাজ করে না।kotlin { androidLibrary { namespace = "com.example.namespace" compileSdk = 36 } sourceSets { androidMain.dependencies { // THIS DOES NOT WORK // baselineProfile(":yourProducerProject") } } }পরিবর্তে, আপনাকে
baselineProfile**এক্সটেনশন ব্যবহার করে ডিপেন্ডেন্সি নির্ধারণ করতে হবে। (Ie19c4)plugins { id("org.jetbrains.kotlin.multiplatform") id("com.android.kotlin.multiplatform.library") id("androidx.baselineprofile.consumer") } kotlin { androidLibrary { namespace = "com.example.namespace" compileSdk = 36 } sourceSets { androidMain.dependencies { // ... } } } // Define dependencies // This works ! baselineProfile { variants { androidMain { from(project(":yourProducerProject")) } } }
Version 1.5.0-alpha01
১৭ ডিসেম্বর, ২০২৫
androidx.benchmark:benchmark-*:1.5.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 1.5.0-alpha01-এ এইসব কমিট আছে।
- Macrobenchmark 1.5, পরিমাপ করা অ্যাপ্লিকেশনের সাথে ইন্টার্যাক্ট করা সহজ করতে
UiAutomator2.4 ব্যবহার করে। MacrobenchmarkScope অবজেক্ট এখন UiAutomatorTestScope-এর এক্সটেন্ডেড ভার্সন, যা আপনাকেUiAutomator-এর মতো আধুনিকonElement { ... }.click()API ব্যবহার করতে দেয়। UiAutomator2.4 সম্পর্কে আরও জানতে, ডকুমেন্টেশন দেখুন।
নতুন ফিচার
- বেসলাইন প্রোফাইল Gradle প্লাগ-ইনের জন্য AGP 9.0-এ
newDsl=false-এর আর প্রয়োজন নেই (Iaaac7, b/443311090) - বেঞ্চমার্ক ক্যাপচার করা সিস্টেম/পার্ফেটো ট্রেসে কোর সাইজ (যেমন, ছোট/বড়) অন্তর্ভুক্ত করতে ট্রেস কনফিগারেশন বাড়ান। (I8e397, b/457469959)
API-তে পরিবর্তন
- (UiAutomator-এ) নতুন উইন্ডোর জন্য অপেক্ষা করার জন্য
startActivityঅপেক্ষা করার সময় পরিবর্তন করা হয়েছে। (I35da6, b/440021797) - androidx.benchmark-এ
BlackHoleটি API স্টেবিলাইজ করা। (I2b67e, b/451749438) PerfettoTraceRule-এর জন্য কনভেনিয়েন্স কনস্ট্রাক্টর হিসেবে@JvmOverloadsযোগ করুন। (I1510a, b/443763207)
ভার্সন ১.৪
ভার্সন 1.4.1
১০ সেপ্টেম্বর, ২০২৫
androidx.benchmark:benchmark-*:1.4.1 রিলিজ করা হয়েছে। ভার্সন 1.4.1-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- ফিক্স করা
perfettoSdkTracing=true(যেমন, মাইক্রোবেঞ্চমার্কে কম্পোজ ট্রেস করার সময়) টার্গেট প্রসেস আগে থেকেই চলতে থাকলে এবং StartupMode উল্লেখ করা না থাকলে সেটি বন্ধ করে দেবে। (Ib2c1f)
ভার্সন 1.4.0
৩০ জুলাই, ২০২৫
androidx.benchmark:benchmark-*:1.4.0 রিলিজ করা হয়েছে। ভার্সন ১.৪.০-এ এইসব কমিট রয়েছে।
1.3.0 ভার্সনের পর থেকে হওয়া গুরুত্বপূর্ণ পরিবর্তন
Microbenchmark
- Gradle প্রোজেক্ট আইসোলেশন বজায় রাখতে, Gradle টাস্ক
lockClocksএবংunlockClocksটপ লেভেলের পরিবর্তে বেঞ্চমার্ক প্রোজেক্টে সরানো হয়েছে। - কোরুটিনের উপরে তৈরি করার জন্য
BenchmarkRuleরিফ্যাক্টর করা হয়েছে এবং আরও ভালyield()আচরণকে সাপোর্ট করে। এটি বেঞ্চমার্ক রান, বিশেষ করে দীর্ঘ CI রানের সময় ANR-এর ঝুঁকি উল্লেখযোগ্যভাবে কমিয়ে দেবে। মনে রাখবেন: UI বেঞ্চমার্কmeasureRepeatedOnMainThread-এর সাথে রান করা উচিত
ম্যাক্রোবেঞ্চমার্ক
CompilationMode.None()-এর জন্য API 34+-এ যোগ করা ওয়ার্কঅ্যারাউন্ডের পারফর্ম্যান্স অসঙ্গতিপূর্ণ হতে পারে, কারণ প্রথমবার লঞ্চ করার পরে ART আংশিকভাবে অ্যাপ কম্পাইল করে।- পরীক্ষামূলক ফিচার -
MacrobenchmarkRule(..., experimentalConfig = ExperimentalConfig(StartupInsightsConfig(isEnabled = true)))পাস করার মাধ্যমে স্টার্ট-আপ ইনসাইট, স্টার্ট-আপ ম্যাক্রোবেঞ্চমার্কে নির্দিষ্ট সাধারণ সমস্যা হাইলাইট করতে পারে। - ArtMetric যোগ করা হয়েছে যা JIT কম্পাইলেশন ও অপ্টিমাইজ না করা ক্লাস লোডিং শনাক্ত করতে ব্যবহার করা যেতে পারে - বেসলাইন প্রোফাইল অপ্টিমাইজেশন যাচাই করার জন্য দুটিই উপযোগী।
বেসলাইন প্রোফাইল
BaselineProfileRuleএখন মাল্টি-প্রসেস অ্যাপের জন্য প্রোফাইল সংগ্রহ করে।
অন্যান্য পরিবর্তন
- TraceProcessor-কে নিজস্ব লাইব্রেরিতে (
androidx.benchmark:benchmark-traceprocessor) নিয়ে যাওয়া হয়েছে যাতে এটিMacrobenchmarkমেট্রিক্সের বাইরে, অন্যান্য ক্ষেত্রে ব্যবহার করা যায়। এছাড়াও, আপনার নিজস্ব ServerLifecycleManager সংজ্ঞায়িত করে এটি ডেস্কটপ JVM-এ রান করা যেতে পারে।
Version 1.4.0-rc01
১৮ জুন, ২০২৫
androidx.benchmark:benchmark-*:1.4.0-rc01 রিলিজ করা হয়েছে। ভার্সন 1.4.0-rc01-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- রানটাইম ইমেজের জন্য ওয়ার্কঅ্যারাউন্ড যোগ করা হয়েছে যার ফলে প্রথম ইটারেশনের পরে
CompilationMode.None()সবচেয়ে খারাপ পারফর্ম্যান্স পরিমাপ করতে পারে না। দুর্ভাগ্যবশত, এই ওয়ার্কঅ্যারাউন্ডের জন্য ৫ সেকেন্ডের বিলম্ব প্রয়োজন যাতে প্রতিটি ম্যাক্রোবেঞ্চমার্ক সুইটের (I4a4f1) শুরুতে রানটাইম ইমেজ ইচ্ছাকৃতভাবে নষ্ট করা যায়।
ভার্সন 1.4.0-beta02
৪ জুন, ২০২৫
androidx.benchmark:benchmark-*:1.4.0-beta02 রিলিজ করা হয়েছে। 1.4.0-beta02 ভার্সনে এইসব কমিট আছে।
API-তে পরিবর্তন
- Java ডেভেলপারদের জন্য
BaselineProfileRule.collectWithResults()-কে কল করা আরও সহজ করতেBaselineProfileConfig.Builderযোগ করা হয়েছে। (I94905)
ভার্সন 1.4.0-beta01
৭ মে, ২০২৫
androidx.benchmark:benchmark-*:1.4.0-beta01 রিলিজ করা হয়েছে। 1.4.0-beta01 ভার্সনে এইসব কমিট আছে।
API-তে পরিবর্তন
PerfettoTraceRuleকনস্ট্রাক্টর ভেরিয়েন্ট যোগ করা হয়েছে যাPerfettoConfig(Ie53ba) গ্রহণ করে
সমস্যার সমাধান
- সঠিক প্লাগ-ইন ও আরও স্পষ্ট ডিলিমিটার ব্যবহার করার জন্য
TraceProcessorস্টার্টআপ ইনসাইট লিঙ্ক ফর্ম্যাট আপডেট করা হয়েছে (:,%3A-এর চেয়ে ছোট এবং দুটিই কাজ করে) (Ie18ef) - প্রসেস বন্ধ করতে সবসময় জোর করে বন্ধ করার বিকল্প ব্যবহার করুন, এমনকি রুট করা এবং সিস্টেম অ্যাপ বন্ধ করার সময়ও। ফর্মের ব্যতিক্রম সংক্রান্ত সমস্যার সমাধান করে:
Expected no stdout/stderr from killall ... No such process. (Idca2c)
এক্সটার্নাল কন্ট্রিবিউশন
TraceProcessorHttpServer-এর জন্য প্রক্সি ব্যতিক্রম হ্যান্ডলার যোগ করা হয়েছে (I480f5)
ভার্সন 1.4.0-alpha11
৯ এপ্রিল, ২০২৫
androidx.benchmark:benchmark-*:1.4.0-alpha11 রিলিজ করা হয়েছে। ভার্সন 1.4.0-alpha11-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
TraceProcessor-এর আর্গুমেন্ট টাইমআউট পরিবর্তন করা হয়েছে: Java কলারের ব্যবহারযোগ্যতার জন্য timeoutMs-এর সময়সীমা অনেক বেশি। (I9fbb5)TraceProcessorকনস্ট্রাক্টরকে ইন্টার্নাল হিসেবে চিহ্নিত করুন। কলারদেরTraceProcessor.startServerবাTraceProcessor.runServerব্যবহার করা উচিত। (Ia8c5b)
সমস্যার সমাধান
MacrobenchmarkScope.killProcess-এর মাধ্যমে অ্যাপ্লিকেশন বন্ধ করার সময়, সাইলেন্ট ফেলিয়র ও টাইমআউট এরর এড়াতে কিল কমান্ডের ফলাফল যাচাই করুন। (I84555)
নির্ভরতা সংক্রান্ত আপডেট
- এই লাইব্রেরি এখন Kotlin 2.0 ভাষা লেভেলকে টার্গেট করে এবং এর জন্য KGP 2.0.0 বা তার পরবর্তী যেকোনও ভার্সন প্রয়োজন। (Idb6b5)
ভার্সন 1.4.0-alpha10
২৬ মার্চ, ২০২৫
androidx.benchmark:benchmark-*:1.4.0-alpha10 রিলিজ করা হয়েছে। 1.4.0-alpha10 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
TraceProcessorসার্ভার লোড এবং কোয়েরি করার জন্য ডিফল্ট টাইমআউট ১২০ সেকেন্ডে (আগে ৬০/৩০ ছিল) বাড়ানো হয়েছে এবং একটি টাইমআউট প্যারামিটার দিয়ে উভয়কেই কনফিগার করা হয়েছে। (Ifec87)
সমস্যার সমাধান
profileinstallerছাড়া কোনও অ্যাপের প্রোফাইল বেঞ্চমার্কিং বা ক্যাপচার করার সময় কিছু সমস্যার সমাধান করা হয়েছে এবং এতেBroadcastRecieverঅন্তর্ভুক্ত রয়েছে। এটি শুধুমাত্র রুট করা ডিভাইসে রান করার ক্ষেত্রে প্রভাব ফেলে। (Ied308)
ভার্সন 1.4.0-alpha09
১২ মার্চ, ২০২৫
androidx.benchmark:benchmark-*:1.4.0-alpha09 রিলিজ করা হয়েছে। 1.4.0-alpha09 ভার্সনে এইসব কমিট আছে।
API-তে পরিবর্তন
- কাস্টম লাইফসাইকেলের সাথে আরও সহজে ব্যবহার করার জন্য, বন্ধ করা যায় এমন হ্যান্ডেল সহ
TraceProcessorএবং সেশন API যোগ করা হয়েছে। এছাড়াও, এটি আরও সহজে কোরাউটিন ও Java API ব্যবহার করার সুবিধা চালু করার দিকে একটি পদক্ষেপ।TraceProcessor.runServer {}-এর এক্সটেনশন ফাংশন এখন পরীক্ষামূলক হিসেবে চিহ্নিত করা হয়েছে, কারণ সেগুলি সরানো হতে পারে এবং ভবিষ্যতে পরীক্ষামূলক নয় হিসেবে তৈরি করা হতে পারে। (I358b4)
সমস্যার সমাধান
pgrepটয়বক্সে পরিবর্তনের কারণে API 36-এর সাথে বেঞ্চমার্ক ও বেসলাইন প্রোফাইল ক্যাপচার কাজ না করার সমস্যা সমাধান করা হয়েছে। এখন সম্পূর্ণ কমান্ড লাইন প্রিন্ট করার জন্য-aপ্রয়োজন। (Idc991)- নতুন API লেভেলে ট্রেস থেকে ডেটা হারানোর ঝুঁকি কমাতে ডিফল্ট ট্রেসিং কনফিগারেশন ফিল্টার করুন। (I54e8a)
- পরীক্ষামূলক
androidx.benchmark.killExistingPerfettoRecordingsইন্সট্রুমেন্টেশন আর্গুমেন্ট যোগ করা হয়েছে, যা আগে থেকে থাকা পারফেটো ট্রেস ক্যাপচার চালিয়ে যাওয়ার অনুমতি দিতেfalse-এ সেট করা যেতে পারে। ডিফল্ট হিসেবে, ডিভাইসে আগে থেকে থাকা পারফেক্টো ট্রেস ক্যাপচার বন্ধ করে দেওয়া হয় যাতে কোনও বাধা না ঘটে। (I02a3c) - API 35 ও তার উপরের লেভেলে রিলিজ করা OS ভার্সনের জন্য JSON ফিল্ড
context.osCodenameAbbreviatedএখনRELহবে, কারণ অন্তর্নিহিত প্ল্যাটফর্ম আর নন-নিউমেরিক কোড নেম সাপোর্ট করে না। (Ib17fd) FrameTimingMetric-এ আবার সিঙ্ক করা ফ্রেমের কারণে ক্র্যাশ হওয়ার সমস্যা সমাধান করা হয়েছে। (I7c6f4, b/394610806)FrameTimingQuery-এর জন্য আর ধরে নেওয়া যাবে না যেChoreographer#doFrameহল মূল থ্রেডের স্ট্যাক ফ্রেমের সবচেয়ে উপরে। (Iee0e0, b/340206285)
ভার্সন 1.4.0-alpha08
১২ ফেব্রুয়ারি, ২০২৫
androidx.benchmark:benchmark-*:1.4.0-alpha08 রিলিজ করা হয়েছে। ভার্সন 1.4.0-alpha08-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
TraceProcessor.runSession()এক্সটেনশন এপিআই সরিয়ে পরীক্ষামূলক করা হয়েছে, কারণ সেগুলি সম্ভবত Android-এ কনক্রিট কনস্ট্রাক্টর হিসেবে সরিয়ে দেওয়া হবে। (Ib0528, b/393640753)- Startup Insights-এর বেশিরভাগ প্রয়োগ এখন পাবলিক/এক্সপেরিমেন্টাল এবং
TraceProcessorআর্টিফ্যাক্ট দেখুনStartupInsights-এ চলে গেছে। (I0aa00) BenchmarkRule.runWithMeasurementDisabled {}-এর পরিবর্তেBenchmarkRule.runWithTimingDisabled {}-এর ব্যবহার বন্ধ করুন, যা আরও স্পষ্টভাবে আচরণ বর্ণনা করে - সব মেট্রিক পজ করা হয়েছে। এছাড়াও,MicrobenchmarkScopeসুপারক্লাস এক্সপোজ করুন, কারণrunWithMeasurementDisabledফাংশনটি ইনলাইন হওয়ার কারণে ওপেন অ্যাক্সেস হিসেবে আবার ঘোষণা করা সম্ভব নয়। (I9e23b, b/389149423, b/149979716)- বেঞ্চমার্ক লাইব্রেরি Kotlin 2.0-তে সরিয়ে নিয়ে যাওয়া হয়েছে। (I9d1e0)
androidx.benchmark.startupProfiles.enableইনস্ট্রুমেন্টেশন আর্গুমেন্ট সরিয়ে দেওয়া হয়েছে। এটি আর ব্যবহারযোগ্য নয়, কারণBaselineProfileRule.collect()-এincludeInStartupProfileআর্গুমেন্ট দিয়ে এটি কন্ট্রোল করা যায়। (I39eb4)
সমস্যার সমাধান
- প্রোফাইলিংয়ের সময় কল করা Microbenchmark ইন্টার্নাল ফাংশনের সংখ্যা কমানো হয়েছে, যাতে যেমন, মেথড ট্রেস আরও স্পষ্ট হয় (Ifaed8)
- ক্র্যাশ সংক্রান্ত সমস্যার সম্ভাব্য সমাধান: '[
ProcessPid(processName=perfetto, pid=...)] বন্ধ করা যায়নি'। এখন, কোনও ব্যাকগ্রাউন্ড Perfetto প্রসেস, বেঞ্চমার্ক চালানোর আগে বন্ধ করা না গেলে, বেঞ্চমার্ক ক্র্যাশ না করে একটি মেসেজ লগ করবে। (I37d3e, b/323601788) - 'প্রত্যাশিত
pm dump-profilesstdout' লেবেল সহIllegalStateExceptionsঠিক করুন যা অত্যন্ত কঠোর আউটপুট ফর্ম্যাট চেকের কারণে হয়েছে। (I358dc)
Version 1.4.0-alpha07
২৯ জানুয়ারি, ২০২৫
androidx.benchmark:benchmark-*:1.4.0-alpha07 রিলিজ করা হয়েছে। 1.4.0-alpha07 ভার্সনে এইসব কমিট রয়েছে।
নতুন ফিচার
BaselineProfileRuleএখন একটিcollectWithResults(...)API চালু করেছে যাতে গণনা করা প্রোফাইলের পাথগুলির একটি তালিকা অন্তর্ভুক্ত রয়েছে। (I056f8)androidx.benchmark.measureRepeatedOnMainThread.throwOnDeadlineইনস্ট্রুমেন্টেশন আর্গুমেন্ট যোগ করা হয়েছে, যা লোকাল টেস্টিংয়ের জন্যmeasureRepeatedOnMainThread-এর ডেডলাইন বিহেভিয়ার বন্ধ করতে false হিসেবে সেট করা যেতে পারে। অন্যথায় সাজেস্ট করা হয় না, কারণ এর ফলে টেস্ট চলাকালীন ANR-এর সম্ভাবনা বেড়ে যায়। (Idbeec, b/353226476)
API-তে পরিবর্তন
MicrobenchmarkConfigকনস্ট্রাক্টরে@JvmOverloadsযোগ করা হয়েছে। (I13fd3)- কোরুটিনের উপরে তৈরি করার জন্য
BenchmarkRuleরিফ্যাক্টর করা হয়েছে এবং আরও ভালyield()আচরণে সহায়তা করে। এই রিফ্যাক্টর বেশ কয়েকটি পরীক্ষামূলকBenchmarkStateAPI সরিয়ে দিয়েছে, তবে প্রয়োজন অনুযায়ী এগুলি রিপ্লেস করা হবে। এছাড়াও, আচরণ স্পষ্ট করতেrunWithMeasurementDisabledযোগ করা হয়েছে (সব পরিমাপ পজ করা আছে)। ভবিষ্যতে,runWithTimingDisabledবন্ধ করে দেওয়া হবে। (I19837, b/389149423, b/311242861) - নতুন
androidx.benchmark:benchmark-traceprocessorআর্টিফ্যাক্টেPerfettoTraceProcessorথেকেTraceProcessor-এ সরিয়ে নিন এবং এর বেশিরভাগ API-কে নন-এক্সপেরিমেন্টাল করে তুলুন। যেকোনও কাস্টমTraceMetricবা ট্রেস থেকে রিড করা যেকোনও কিছু নতুনTraceProcessorইমপোর্টে আপডেট করতে হবে। নতুনTraceProcessorAPI ঠিক পুরনোটির মতোই কাজ করে, তবে এটি একটি স্ট্যান্ডঅ্যালোন ইন্টারফেস লাইব্রেরি (কিছুটা Room থেকেandroidx.sqliteলেয়ারের মতো) যার সাথে ম্যাক্রোবেঞ্চমার্কে তৈরি Android-নির্দিষ্ট ইমপ্লিমেন্টেশন রয়েছে। নতুন আর্টিফ্যাক্ট JVM-এও ব্যবহার করা যেতে পারে, তবে বর্তমানে আপনাকেTraceProcessorবাইনারির নিজস্ব কপি শুরু করতে হবে এবং এটিতে কানেক্ট করার জন্য একটি পোর্ট অফার করতে হবে। (I3a767, I62563, b/381134564)
সমস্যার সমাধান
MacrobenchmarkScope.startActivityAndWaitটার্গেট প্রসেস লঞ্চ করতে না পারলে (সম্ভবত টার্গেট প্রসেস ক্র্যাশ করার কারণে), আরও অস্পষ্ট 'অ্যাক্টিভিটি লঞ্চ সম্পূর্ণ হয়েছে কিনা তা কনফার্ম করা যায়নি' মেসেজের (I3539b) পরিবর্তে আরও স্পষ্ট ত্রুটি মেসেজ দেখান- Kotlin স্যাম্পেলে একাধিক সিনট্যাক্স সংক্রান্ত সমস্যা সমাধান করা হয়েছে এবং একাধিক Java / build.gradle স্যাম্পেলে সিনট্যাক্স হাইলাইট করা হয়েছে। (Ib3808)
ArtMetricএবংCaptureInfoপ্যারামিটার ডকুমেন্ট স্পষ্ট করা হয়েছে। (I96e60)
ভার্সন 1.4.0-alpha06
১১ ডিসেম্বর, ২০২৪
androidx.benchmark:benchmark-*:1.4.0-alpha06 রিলিজ করা হয়েছে। 1.4.0-alpha06 ভার্সনে এইসব কমিট আছে।
API-তে পরিবর্তন
PerfettoTraceProcessor.Session.query()-এ@Language("sql")-এর ব্যবহার সরিয়ে দেওয়া হয়েছে, কারণ Studio হাইলাইটিং/পার্সিং কাজ করছে না। (Idc2fa, b/377733398)
সমস্যার সমাধান
- এই লাইব্রেরি এখন JSpecify নালনেস অ্যানোটেশন ব্যবহার করে, যা টাইপ-ইউজ। Kotlin ডেভেলপারদের সঠিক ব্যবহার এনফোর্স করার জন্য নিম্নলিখিত কম্পাইলার আর্গুমেন্ট ব্যবহার করা উচিত:
-Xjspecify-annotations=strict(এটি Kotlin কম্পাইলারের ভার্সন 2.1.0 থেকে শুরু করে ডিফল্ট)। (I46810, b/326456246) - ক্লাস লোড (init নয়) রিপোর্ট করার জন্য
ArtMetricসংশোধন করা হয়েছে এবং রানটাইম আচরণ স্পষ্ট করার জন্য ডকুমেন্ট উন্নত করা হয়েছে। (I9915c) - Android মাল্টিইউজারে, শুধুমাত্র রুট করা ডিভাইসে রুট হিসেবে কমান্ড এক্সিকিউট করুন। (I88b44)
ভার্সন 1.4.0-alpha05
১৩ নভেম্বর, ২০২৪
androidx.benchmark:benchmark-*:1.4.0-alpha05 রিলিজ করা হয়েছে। 1.4.0-alpha05 ভার্সনে এইসব কমিট রয়েছে।
সমস্যার সমাধান
- API 34+ ভার্সনে একটি সমস্যার সমাধান করা হয়েছে যেখানে
CompilationMode.None()-এর পারফর্ম্যান্স সামঞ্জস্যপূর্ণ ছিল না এবং এটি প্রাথমিক, সবচেয়ে খারাপ পারফর্ম্যান্সের প্রতিনিধিত্ব করে না। এটি প্ল্যাটফর্ম পরিবর্তনের সাথে কাজ করে যা ART-এর কম্পাইলেশন স্টেটverify-কে প্রথমবার লঞ্চ করার কিছুক্ষণ পরেই আংশিকভাবে অ্যাপ কম্পাইল (শুধুমাত্র ক্লাস লোডিংকে প্রভাবিত করে) করার অনুমতি দেয়। (Ie48d0) - যেখানে (বিশেষ করে ছোট) ট্রেস ক্যাপচার করা যেত, সেই সমস্যার সমাধান করা হয়েছে, যা বিল্ট-ইন ম্যাক্রোবেঞ্চমার্ক মেট্রিক থেকে পরিমাপের রিপোর্ট করত না, কারণ Perfetto ট্রেসের মধ্যে প্রসেসের নাম ট্রানকেট করা হয়েছে। এখন ম্যাক্রোবেঞ্চমার্ক প্রত্যাশিত প্যাকেজের নামের পাশাপাশি সমস্ত বিল্ট-ইন কোয়েরিতে ট্রাঙ্কেট করা প্যাকেজের নাম খুঁজে এই সমস্যার সমাধান করে। মনে রাখবেন যে কাস্টম
TraceMetricইমপ্লিমেন্টেশন বাPerfettoSession.query-এর অন্যান্য ডাইরেক্ট কলার, Perfetto কোয়েরিতেprocess.name LIKE "$packageName"-এর পরিবর্তে(process.name LIKE "$packageName" OR process.name LIKE "$(packageName.takeLast(15))")ব্যবহার করে একই আচরণ ইমপ্লিমেন্ট করতে পারে। (I5bf01, b/377565760)
ভার্সন 1.4.0-alpha04
৩০ অক্টোবর, ২০২৪
androidx.benchmark:benchmark-*:1.4.0-alpha04 রিলিজ করা হয়েছে। 1.4.0-alpha04 ভার্সনে এইসব কমিট রয়েছে।
নতুন ফিচার
- (পরীক্ষামূলক) সেকেন্ডারি ব্যবহারকারীর ইনস্টল করা অ্যাপের জন্য বেসলাইন প্রোফাইল জেনারেশন ও বেঞ্চমার্কিং চালু করুন, যেমন হেডলেস Android Auto ডিভাইসে থাকা যেকোনও অ্যাপ। এই সহায়তা কিছু পরিস্থিতিতে পরীক্ষা করা হয়েছে, তবে আপনার ক্ষেত্রে এটি কাজ না করলে, বাগ সংক্রান্ত সমস্যার মাধ্যমে আমাদের জানান। (I9fcbe, b/356684617, b/373641155)
সমস্যার সমাধান
isProfileableএখন বেঞ্চমার্ক বিল্ডে সবসময় ওভাররাইড করা হয় এবংisDebuggable-ও এখন বেঞ্চমার্ক ওnonMinified(বেসলাইন প্রোফাইল ক্যাপচার) বিল্ডে সবসময় ওভাররাইড করা হয়। (I487fa, b/369213505)- API 28-এর আগে কিছু ফিজিক্যাল ডিভাইসে কম্পাইলেশন শনাক্তকরণ সংক্রান্ত সমস্যার সমাধান করে - json
context.compilationMode-এর পাশাপাশিandroidx.benchmark.requireAot=true-এর আচরণকে প্রভাবিত করে (যা আর ভুলভাবে থ্রো করে না) (Ic3e08, b/374362482) CpuEventCounterমেট্রিক্সে, ভুল পরিমাপ লক্ষ্য করা গেলে (যেমন, instructions/cpucycles==0) থ্রো করুন (I8c503)
ভার্সন 1.4.0-alpha03
১৬ অক্টোবর, ২০২৪
androidx.benchmark:benchmark-*:1.4.0-alpha03 রিলিজ করা হয়েছে। 1.4.0-alpha03 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- ম্যাক্রোবেঞ্চমার্ক:
ArtMetricযোগ করে, যা প্রোফাইল কভারেজ বা সাধারণ Android RunTime পারফর্ম্যান্স পরিদর্শন করতে ব্যবহার করা যেতে পারে। JIT, ক্লাস ইনিট (যেখানে উপলভ্য) এবং ক্লাস যাচাইকরণের সংখ্যা ও মোট সময়সীমা ক্যাপচার করে। এছাড়াও,CaptureInfoপরিবর্তন করে ডিফল্ট হিসেবে ঐচ্ছিক ART মেইনলাইন ভার্সন অন্তর্ভুক্ত করা হয়েছে। (I930f7) - প্রদত্ত বেঞ্চমার্ক রান-এর মধ্যে স্টেবিলিটি দেখাতে বেঞ্চমার্ক JSON আউটপুটে
coefficientOfVariationযোগ করুন। (Ib14ea)
সমস্যার সমাধান
- AVD ডিভাইসে স্পেস থাকলে
CollectBaselineProfileTaskসংক্রান্ত সমস্যা সমাধান করা হয়েছে। (Ia0225, b/371642809) StartupMode.COLDব্যতিক্রম থেকে হওয়া সমস্যার জন্য সম্ভাব্য সমাধান:Package <packagename> must not be running prior to cold start!. এখন,MacrobenchmarkScope.killProcess()(প্রতিটি ইটারেশনের আগে চালানো একটি সহ,StartupMode.COLDআচরণ প্রয়োগ করতে ব্যবহৃত) অ্যাপের প্রসেসগুলি সব বন্ধ হয়ে গেছে কিনা তা যাচাই করার জন্য অপেক্ষা করবে। (I60aa6, b/351582215)- কিছু রুট করা এমুলেটরে UNLOCKED_ error দেখানোর সমস্যা সমাধান করা হয়েছে। (Ic5117)
- এই লাইব্রেরি এখন JSpecify নালনেস অ্যানোটেশন ব্যবহার করে, যা টাইপ-ইউজ। Kotlin ডেভেলপারদের সঠিক ব্যবহার এনফোর্স করার জন্য নিম্নলিখিত কম্পাইলার আর্গুমেন্ট ব্যবহার করা উচিত:
-Xjspecify-annotations=strict(এটি Kotlin কম্পাইলারের ভার্সন 2.1.0 থেকে শুরু করে ডিফল্ট)। (I7104f, b/326456246)
ভার্সন 1.4.0-alpha02
২ অক্টোবর, ২০২৪
androidx.benchmark:benchmark-*:1.4.0-alpha02 রিলিজ করা হয়েছে। 1.4.0-alpha02 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- Gradle টাস্ক
lockClocksওunlockClocksসরিয়ে বেঞ্চমার্ক প্রোজেক্টে রাখা হয়েছে, এগুলি আর টপ লেভেলে উপলভ্য নেই। এই পরিবর্তন করা প্রয়োজন ছিল কারণ প্রোজেক্ট আইসোলেশন না ভেঙে এগুলিকে টপ লেভেল অ্যাকশন হিসেবে রেজিস্টার করার কোনও উপায় দুর্ভাগ্যবশত নেই। (I02b8f, b/363325823)
সমস্যার সমাধান
BaselineProfileRuleএখন মাল্টি-প্রসেস অ্যাপের জন্য প্রোফাইল সংগ্রহ করে, প্রোফাইল ডাম্প করার জন্য ব্লকের শেষে প্রতিটি চলমান প্রসেসকে সিগন্যাল দেয়। প্রোফাইল ভিত্তিক কম্পাইলেশন যদি কখনও সম্প্রচারের জন্য কোনও প্রসেস খুঁজে না পায়, তাহলে কম্পাইলেশনটি ব্যর্থ হবে, কারণ এর মধ্যে প্রোফাইল ডেটা থাকা অপ্রত্যাশিত। এছাড়াও, ডাম্পের জন্য অপেক্ষা করার সময়সীমা নিয়ন্ত্রণ করতে একটি ইনস্ট্রুমেন্টেশন আর্গুমেন্ট যোগ করা হয়েছে:androidx.benchmark.saveProfileWaitMillis(I0f519, b/366231469)- বেঞ্চমার্ক থেকে
1.3.2: Firebase Test Lab (FTL) বেসলাইন প্রোফাইল Gradle প্লাগ-ইন থেকে বেসলাইন প্রোফাইল বা ম্যাক্রোবেঞ্চমার্ক ফলাফল ফাইল পুল করতে না পারার সমস্যা সমাধান করা হয়েছে। (I2f678, b/285187547)
FTL ব্যবহার করতে, প্লাগ-ইন ব্লকে বেসলাইন প্রোফাইল মডিউলে প্লাগ-ইন প্রয়োগ করুন, এগুলি সহ:
plugins {
...
id("com.google.firebase.testlab")
}
এবং তারপরে এগুলি দিয়ে Firebase Test Lab কনফিগার করুন:
firebaseTestLab {
// Credentials for FTL service
serviceAccountCredentials.set(file("credentials.json"))
// Creates one or more managed devices to run the tests on.
managedDevices {
"ftlDeviceShiba34" {
device = "shiba"
apiLevel = 34
}
}
// Ensures the baseline profile is pulled from the device.
// Note that this will be automated as well later with aosp/3272935.
testOptions {
results {
directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
}
}
}
এছাড়াও, তৈরি করা FTL ডিভাইসকে বেসলাইন প্রোফাইল এক্সটেনশনে যোগ করতে হবে:
baselineProfile {
managedDevices += "ftlDeviceShiba34"
useConnectedDevices = false
}
Version 1.4.0-alpha01
১৮ সেপ্টেম্বর, ২০২৪
androidx.benchmark:benchmark-*:1.4.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 1.4.0-alpha01-এ এইসব কমিট আছে।
নতুন ফিচার - অ্যাপ স্টার্টআপ ইনসাইট
- অ্যাপ স্টার্টআপ ইনসাইটের প্রাথমিক ভার্সন Macrobenchmark-এ চালু করা যেতে পারে। (09fae38)
স্টার্টআপ বেঞ্চমার্কে চালু করতে:
@Test
fun startup {
macrobenchmarkRule.measureRepeated(
…
packageName = "com.example.my.application.id"
metrics = listOf(StartupTimingMetric()),
iterations = 5,
startupMode = StartupMode.COLD,
compilationMode = CompilationMode.None(),
experimentalConfig = ExperimentalConfig(startupInsightsConfig = StartupInsightsConfig(isEnabled = true))
) {
scope.startActivityAndWait(...)
}
}
তারপর আপনার স্টার্টআপ বেঞ্চমার্ক রান করলে তা সাধারণ সমস্যা খোঁজার জন্য ট্রেস বিশ্লেষণ করবে এবং বেঞ্চমার্ক ট্যাবে Studio টেস্ট আউটপুটে মেট্রিক্সের পরে সেগুলি প্রিন্ট করবে, যেমন:
StartupBenchmark_startup[startup=COLD,compilationMode=None]
├── Metrics
│ ├── timeToFullDisplayMs min 1,147.2, median 1,208.8, max 1,307.4
│ └── timeToInitialDisplayMs min 1,147.2, median 1,208.8, max 1,307.4
├── App Startup Insights
│ ├── App in debuggable mode (expected: false)
│ │ └── seen in iterations: 0(true) 1(true) 2(true) 3(true) 4(true) 5(true) 6(true) 7(true) 8(true) 9(true)
│ ├── Potential CPU contention with another process (expected: < 100000000ns)
│ │ └── seen in iterations: 4(105022546ns)
│ └── Main Thread - Binder transactions blocked (expected: false)
│ └── seen in iterations: 7(true)
└── Traces
└── Iteration 0 1 2 3 4 5 6 7 8 9
এই ফিচারটি এখনও তৈরি করা হচ্ছে, ডকুমেন্টেশন এবং এক্সটেনসিবিলিটি উন্নত করার কাজ চলছে, তবে আপনার মতামত জানাতে পারেন।
নতুন ফিচার
- সব বেসলাইন প্রোফাইল সংক্রান্ত সতর্কতা বন্ধ করতে, গ্রেডেল প্রপার্টি
androidx.baselineprofile.suppressWarningsযোগ করা হয়েছে। (314153a) - মাইক্রোবেঞ্চ মেট্রিক এখন Perfetto ট্রেসে কাউন্টার হিসেবে দেখানো হয়। (3214854)
- jit বন্ধ করার জন্য পরীক্ষামূলক স্ক্রিপ্ট যোগ করুন (রুট / রানটাইম রিস্টার্ট প্রয়োজন) এবং ডিভাইসের পারফর্ম্যান্স/টেস্ট স্টেট রিসেট করুন। এগুলি বর্তমানে গ্র্যাডেল টাস্ক হিসেবে প্রকাশিত হয় না। (7c3732b)
- এমুলেটরে চালানোর সময় টেস্ট এড়িয়ে যাওয়ার জন্য বেঞ্চমার্ক আর্গুমেন্ট যোগ করা হয়েছে।
automaticGenerationDuringবিল্ড চালু করা থাকলে, বেঞ্চমার্ক বেসলাইন প্রোফাইল জেনারেশনও ট্রিগার করবে। এমুলেটর ব্যবহার করা হলে, এটি কাজ করবে না। নতুন আর্গুমেন্টskipBenchmarksOnEmulator-এর সাহায্যে আমরা এর পরিবর্তে টেস্টটি এড়িয়ে যেতে পারি। (0c2ddcd) - API 23+-এ (2550048) চালানোর জন্য পারফর্ম্যান্স ইভেন্ট চালু করার লজিক পরিবর্তন করুন
API-তে পরিবর্তন
MacrobenchmarkRule.measureRepeated()-এর জন্য আগে থেকে থাকা পরীক্ষামূলকPerfettoConfigআর্গুমেন্ট নতুনExperimentalConfigঅবজেক্টে সরানো হয়েছে।
সমস্যার সমাধান
lockClocks.shআবার চেষ্টা করার সংখ্যা (99e9dac) বাড়ান- আগে থেকে থাকলে
nonMinifiedএবং বেঞ্চমার্ক বিল্ড টাইপ তৈরি করবেন না। বাগ থাকার কারণে,nonMinifiedএবং বেঞ্চমার্ক বিল্ডের ধরন আগে থেকে থাকলেও, সেগুলি আবার তৈরি করা হবে। (e75f0a5) TraceSectionMetricফলাফল থেকে শেষ না হওয়া স্লাইস উপেক্ষা করুন। (a927d20)sdk_প্রিফিক্স বিবেচনা করার জন্য উন্নত এমুলেটর চেক। (1587de8)FrameTimingGfxInfoMetric-এ রান না করা প্যাকেজকে ক্লিয়ার করা হয়েছে বলে ধরে নিন। (35cc79c)- নির্দেশাবলী ছাড়া ইভেন্টের জন্য
androidx.benchmark.cpuEventCounterভুল মান তৈরি করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (06edd59) - মেট্রিক অগ্রাধিকারের ক্রম মেনে চলার জন্য
resumeTiming/runWithTimingDisabledঠিক করুন এবং বেশি অগ্রাধিকারযুক্ত মেট্রিকের ফলাফলে কম অগ্রাধিকারযুক্ত মেট্রিক পজ/রিজিউম করার প্রভাব উল্লেখযোগ্যভাবে কমান। যেমন,cpuEventCounter.enableইন্সট্রুমেন্টেশন আর্গুমেন্টের মাধ্যমে cpu perf কাউন্টার ব্যবহার করলে, পজ/রিজিউম করার সময় timeNs আর উল্লেখযোগ্যভাবে কমে না। (5de0968)
ভার্সন ১.৩
ভার্সন ১.৩.৪
২৬ মার্চ, ২০২৫
androidx.benchmark:benchmark-*:1.3.4 রিলিজ করা হয়েছে। 1.3.4 ভার্সনে এইসব কমিট রয়েছে।
সমস্যার সমাধান
- Benchmark Baseline Gradle প্লাগ-ইনে Gradle প্রোজেক্ট আইসোলেশন সংক্রান্ত অসঙ্গতি ঠিক করা হয়েছে। (b/404523257)
ভার্সন 1.3.3
১৬ অক্টোবর, ২০২৪
androidx.benchmark:benchmark-*:1.3.3 রিলিজ করা হয়েছে। ভার্সন 1.3.3-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- AVD ডিভাইসে স্পেস থাকলে
CollectBaselineProfileTaskঠিক করা হয়েছে (Ia0225, b/371642809)
ভার্সন 1.3.2
২ অক্টোবর, ২০২৪
androidx.benchmark:benchmark-*:1.3.2 রিলিজ করা হয়েছে। ভার্সন 1.3.2-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- বেসলাইন প্রোফাইল Gradle প্লাগ-ইন থেকে বেসলাইন প্রোফাইল বা ম্যাক্রোবেঞ্চমার্ক ফলাফল ফাইল পুল করতে না পারা Firebase Test Lab (FTL) সংক্রান্ত সমস্যা সমাধান করা হয়েছে। (I2f678, b/285187547)
FTL ব্যবহার করতে, প্লাগ-ইন ব্লকে বেসলাইন প্রোফাইল মডিউলে প্লাগ-ইন প্রয়োগ করুন, এর সাথে:
plugins {
...
id("com.google.firebase.testlab")
}
এবং তারপরে এগুলি দিয়ে Firebase Test Lab কনফিগার করুন:
firebaseTestLab {
// Credentials for FTL service
serviceAccountCredentials.set(file("credentials.json"))
// Creates one or more managed devices to run the tests on.
managedDevices {
"ftlDeviceShiba34" {
device = "shiba"
apiLevel = 34
}
}
// Ensures the baseline profile is pulled from the device.
// Note that this will be automated as well later with aosp/3272935.
testOptions {
results {
directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
}
}
}
এছাড়াও, তৈরি করা FTL ডিভাইসটি বেসলাইন প্রোফাইল এক্সটেনশনে যোগ করতে হবে:
baselineProfile {
managedDevices += "ftlDeviceShiba34"
useConnectedDevices = false
}
ভার্সন 1.3.1
১৮ সেপ্টেম্বর, ২০২৪
androidx.benchmark:benchmark-*:1.3.1 রিলিজ করা হয়েছে। ভার্সন 1.3.1-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- সব বেসলাইন প্রোফাইল সংক্রান্ত সতর্কতা (I7c36e, b/349646646) দমন করতে গ্রেডেল প্রপার্টি
androidx.baselineprofile.suppressWarningsযোগ করা হয়েছে - র্যাপার তৈরি করার পরিবর্তে অ্যাপের তৈরি করা আগে থেকে থাকা
nonMinified…ওbenchmark…ব্যবহার করার জন্য বেসলাইন প্রোফাইল Gradle প্লাগ-ইন সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (Ia8934, b/361370179) - ইমুলেটরে
automaticGenerationDuringBuildচালু করা থাকলেjava.lang.AssertionError: ERRORS (not suppressed): EMULATORঠিক করা হয়েছে। পরিবর্তে টেস্ট এড়িয়ে যেতে নতুন আর্গুমেন্ট ব্যবহার করা হয়। (If3f51, b/355515798) - মাইক্রোবেঞ্চমার্ক মিনিফিকেশন - বেঞ্চমার্ক লাইব্রেরি proguard-এ
org.junit.runner.notification.RunListener-এর সাবক্লাস রাখুন (Ic8ed5, b/354264743) - অসমাপ্ত স্লাইস উপেক্ষা করার জন্য
TraceSectionMetricঠিক করুন। আগে এগুলির মেয়াদ -১ হিসেবে বিবেচনা করা হত, যেমন, যোগফল বা ন্যূনতম মেয়াদ বের করার সময়। (If74b7) FrameTimingGfxInfoMetric-এ একটি সমস্যার সমাধান করা হয়েছে যেখানে প্রসেসটি আগে থেকে না চললে মেট্রিক শুরু করার সময় ক্র্যাশ করত। (I6e412)
ভার্সন 1.3.0
২১ আগস্ট, ২০২৪
androidx.benchmark:benchmark-*:1.3.0 রিলিজ করা হয়েছে। ভার্সন 1.3.0-এ এইসব কমিট আছে।
1.2.0 থেকে মাইক্রোবেঞ্চমার্কের পরিবর্তন
- বেশিরভাগ ডিভাইসে চালানোর সময় মাইক্রোবেঞ্চমার্কে ডিফল্ট হিসেবে মেথড ট্রেসিং চালু থাকে
- মাপজোখ করার পরে, মেথড ট্রেসিং একটি আলাদা ফেজ হিসেবে রান করে - এটি একটি সিঙ্গেল বেঞ্চমার্ক রান থেকে সঠিক মাপজোখ এবং মেথড ট্রেস, দুটিই আউটপুট করতে সক্ষম করে
- কিছু Android OS এবং ART ভার্সনে মেথড ট্রেসিং পরবর্তী পরিমাপের ফেজকে প্রভাবিত করবে - এইসব ভার্সনে, মেথড ট্রেসিং ডিফল্ট হিসেবে বন্ধ থাকে এবং Studio আউটপুটে একটি সতর্কতা প্রিন্ট করা হয়
- মূল থ্রেড বেঞ্চমার্ক ও ANR
- UI থ্রেড বেঞ্চমার্কের (যেমন, Compose/View UI-এর সাথে ইন্টার্যাক্ট করে এমন বেঞ্চমার্ক) জন্য
measureRepeatedOnMainThreadযোগ করা হয়েছে যাতে অনেক সেকেন্ড ধরে চলার সময় ANR এড়ানো যায়। - ANR এড়ানোর সময়সীমা পেরিয়ে যাওয়ার সম্ভাবনা থাকলে, মেথড ট্রেস এড়িয়ে যাওয়া হয়। এই আচরণ বন্ধ করতে
androidx.benchmark.profiling.skipWhenDurationRisksAnr-কে false হিসেবে সেট করুন (CI রান করার জন্য সাজেস্ট করা হয় না, কারণ ANR-এর কারণে দীর্ঘ CI রানে সমস্যা হতে পারে)।
- UI থ্রেড বেঞ্চমার্কের (যেমন, Compose/View UI-এর সাথে ইন্টার্যাক্ট করে এমন বেঞ্চমার্ক) জন্য
- ছোট করা
- মিনিফিকেশন চালু করে মাইক্রোবেঞ্চমার্কিং উন্নত করতে এম্বেড করা প্রগার্ড নিয়ম
- লাইব্রেরি মডিউলে Minification/R8-এর জন্য AGP 8.3 প্রয়োজন এবং আপনার
build.gradle-এandroid.buildTypes.release.androidTest.enableMinification-এর মাধ্যমে চালু করা যেতে পারে - ডেড কোড এলিমিনেশন প্রতিরোধ করতে পরীক্ষামূলক
BlackHole.consume()API যোগ করা হয়েছে (If6812, b/286091643)
- মেট্রিক
- পরীক্ষামূলক CPU ইভেন্ট কাউন্টার ফিচার (
perf_event_openথেকে মেট্রিক, যার জন্য প্ল্যাটফর্মের বেশিরভাগ ভার্সনে রুট অ্যাক্সেস প্রয়োজন),InstrumentationArgumentandroidx.benchmark.cpuEventCounter.enable-এর মাধ্যমে অ্যাক্সেস (trueহিসেবে সেট করা যেতে পারে) এবংandroidx.benchmark.cpuEventCounter.eventsযেমন (Instructions,CpuCycles) হিসেবে সেট করা যেতে পারে। এটি কিছু userdebug এমুলেটরে কাজ করা উচিত, তবে উপলভ্য সব এমুলেটরে এটি পরীক্ষা করে দেখা হয়নি
- পরীক্ষামূলক CPU ইভেন্ট কাউন্টার ফিচার (
1.2.0 ভার্সন থেকে MACRObenchmark-এ হওয়া পরিবর্তন
- ম্যাক্রোবেঞ্চমার্কের জন্য মেথড ট্রেসিং ওভারহল।
- এখন মেথড ট্রেস
measureBlock-এর সময়সীমার মধ্যে সীমাবদ্ধ এবং প্রসেস একাধিকবার শুরু হলে একাধিক সেশন ক্যাপচার করতে পারে। - আগে, মেথড ট্রেসিং শুধুমাত্র
StartupMode.COLDবেঞ্চমার্কের জন্য কাজ করত এবংmeasureBlocks-এর জন্য কিছুই ক্যাপচার করত না যা টার্গেট প্রসেস রিস্টার্ট করেনি - ম্যাক্রোবেঞ্চমার্কে ফিক্সড মেথড ট্রেস ফ্ল্যাশ করা হয়, যাতে মেথড ট্রেস সম্পূর্ণভাবে ক্যাপচার করা যায় এবং এমনকি ধীর গতির ডিভাইসেও তা সঠিক হয়। (I6349a, b/329904950)
- এখন মেথড ট্রেস
- প্রসেস বন্ধ হয়ে গেলে, স্বতন্ত্র
warmUpইটারেশন চলাকালীন ART প্রোফাইল সঠিকভাবে ডাম্প করা হয়, যাতেCompilationMode.Partial(warmup=N)পরিমাপ আরও নির্ভুল হয়। (I17923) - ড্রপ শেডার ব্রডকাস্ট ব্যর্থতার মেসেজ
- ড্রপ শেডার ব্রডকাস্ট ব্যর্থতা মেসেজে ডিবাগিং সাজেশন যোগ করা হয়েছে
ProfileInstaller1.3:- ছাড়া অ্যাপের বেঞ্চমার্কিং করার সময় ক্র্যাশ এড়াতে শেডার ড্রপিং আচরণ ওভাররাইড করার জন্য দুটি ইনস্ট্রুমেন্টেশন আর্গুমেন্ট যোগ করুন
androidx.benchmark.dropShaders.enable=true/false: সব শেডার ড্রপিং (StartupMode.Coldলঞ্চে করা সহ) এড়িয়ে যেতে ব্যবহার করা যেতে পারে, বিশেষত profileinstaller 1.3 এখনও ব্যবহার করে না এমন অ্যাপ বেঞ্চমার্ক করার সময়androidx.benchmark.dropShaders.throwOnFailure=true/false: শেডার ড্রপ করার চেষ্টা করার সময় ব্যর্থতা সহ্য করতে ব্যবহার করা যেতে পারে, যেমন profileinstaller 1.3 (I4f573) ছাড়া অ্যাপ বেঞ্চমার্ক করার সময়
- এক্সপেরিমেন্টাল
MacrobenchmarkRule#measureRepeatedভেরিয়েন্ট যোগ করা হয়েছে যা সম্পূর্ণ কাস্টমাইজ করা Perfetto ট্রেস রেকর্ডিংয়ের জন্য কাস্টমPerfettoConfigনেয়। মনে রাখবেন, ভুলভাবে কনফিগার করা কনফিগারেশনের কারণে বিল্ট-ইন মেট্রিক ক্লাস কাজ নাও করতে পারে। (Idfd3d, b/309841164, b/304038384) - হস্তক্ষেপ কমানোর জন্য Macrobenchmark চালানোর আগে ব্যাকগ্রাউন্ড dexopt জব বাতিল করুন। (I989ed)
- Macrobenchmark এখন টার্গেট অ্যাপ্লিকেশনকে ART প্রোফাইল ফ্লাশ করার জন্য ১ সেকেন্ড অপেক্ষা করে (আগে এটি ৫০০ মিলি সেকেন্ড অপেক্ষা করত)। (I85a50, b/316082056)
- TraceSectionMetric ওভারহল
- মনে রাখবেন: নিচে উল্লেখ করা
TraceSectionMetricপরিবর্তন CI ব্যবহারের ক্ষেত্রে আউটপুটকে প্রভাবিত করতে পারে এবং এর ফলে ধারাবাহিকতা বজায় নাও থাকতে পারে অথবা পার্সিং বন্ধ হয়ে যেতে পারে - এখন ডিফল্ট হিসেবে যোগফল দেখানো হয়, কারণ এই মেট্রিকের বেশিরভাগ ব্যবহারই বারবার হওয়া ইভেন্টের জন্য এবং প্রথমটি এই ক্ষেত্রে ডেটা বাতিল করে দেবে
- আরও বেশি উপলভ্য মোড সহ আরও কাস্টমাইজ করার মতো করে পরিবর্তন করা হয়েছে
- মোডের নাম এখন মেট্রিক আউটপুট নামে (Studio ও JSON-এ) এম্বেড করা আছে
Trace.{begin|end}AsyncSectionব্যবহার করে তৈরি করা স্লাইস এখন কাজ করে।
- মনে রাখবেন: নিচে উল্লেখ করা
- মেট্রিক
PowerMetric.deviceSupportsHighPrecisionTracking,PowerMetric.deviceBatteryHasMinimumCharge()এবংPowerMetric.deviceSupportsPowerEnergy()যোগ করা হয়েছে- রিটার্ন টাইপের সাথে ম্যাচ করতে
Metric.getResult-এর নাম পরিবর্তন করেgetMeasurementsকরা হয়েছে - সব স্টার্টআপ শনাক্তকরণ ব্যর্থতার জন্য log.w / ব্যতিক্রম লেবেল যোগ করা হয়েছে। এটি বর্তমান আচরণ পরিবর্তন করে না (তাই কিছু ত্রুটি দেখায় এবং অন্যান্যগুলি স্টার্টআপ শনাক্ত করতে নীরবে ব্যর্থ হয়), শুধু এটি আরও বোধগম্য করে তোলে। সাধারণত, যেগুলি
Log.w()এবং স্টার্টআপ মেট্রিক রিপোর্ট করতে ব্যর্থ হয়, সেগুলিতে ফ্রেম-বিহীন ইভেন্ট অনুপস্থিত থাকে, ফ্রেম টাইমিং তথ্য (UI/RT স্লাইস থেকে) ছাড়া স্টার্টআপ শনাক্ত করা হলে ব্যতিক্রম থ্রো করা হয়। (Id240f, b/329145809) FrameTimingMetric-এframeCountপরিমাপ যোগ করা হয়েছে যাতে এমন পরিস্থিতি খুঁজে পেতে সাহায্য করা যায় যেখানে পরিমাপ পরিবর্তিত হয় কারণ তৈরি করা ফ্রেমের সংখ্যা পরিবর্তিত হয়েছে (নতুন অ্যানিমেশন যোগ করা হয়েছে, অবৈধকরণ সংক্রান্ত সমস্যার সমাধান করা হয়েছে)। (I1e5aa)- ডকুমেন্টে উপলভ্য থাকলে, ট্র্যাকিংয়ের জন্য
frameOverrunMsহল পছন্দের মেট্রিক এবং কেন তা স্পষ্ট করা হয়েছে। (I18749, b/329478323) - ট্রেসের শুরুতে ও শেষে শেষ না হওয়া ফ্রেম একসাথে পেয়ার করা যেতে পারে এমন সমস্যার সমাধান করা হয়েছে, যা ভুলভাবে একটি অত্যন্ত দীর্ঘ ফ্রেম হিসেবে রিপোর্ট করা হবে। (I39353, b/322232828)
- ফ্রেম তৈরি না হলে
FrameTimingMetricসংক্রান্ত সমস্যা উন্নত করা এবং সমস্যা নির্ণয় করতে সাহায্য করার জন্য মেট্রিক পার্সিং ব্যর্থ হলে সবসময় ট্রেস করার লিঙ্ক আউটপুট করা। (I956b9) FrameTimingMetric-এ ফ্রেম আইডি পার্স করতে না পারার কারণে হওয়া ক্র্যাশ সংক্রান্ত সমস্যার সমাধান করা হয়েছে, বিশেষ করে নির্দিষ্ট OEM ডিভাইসে। (Ia24bc, b/303823815, b/306235276)FrameMetrics-এ চেকের কঠোরতা শিথিল করা হয়েছে এবং সমস্যার মেসেজে আরও বিবরণ যোগ করা হয়েছে। (Iadede)
1.2.0 ভার্সন থেকে বেসলাইন প্রোফাইল ক্যাপচার / Gradle প্লাগ-ইন পরিবর্তন
- AGP-এর সাজেস্ট করা সর্বাধিক ভার্সন বাড়িয়ে 9.0.0-alpha01 করা হয়েছে।
mergeArtProfileএবংmergeStartupProfileটাস্ক যাতে সবসময় বেসলাইন প্রোফাইল জেনারেশনের জন্য অপেক্ষা করে তা নিশ্চিত করুন। (I623d6, b/343086054)- বেসলাইন প্রোফাইল সফলভাবে তৈরি করা হলে, কী পরিবর্তন হয়েছে তার একটি সারসংক্ষেপ আউটপুট হিসেবে পাওয়া যাবে (I824c8, b/269484510)
- সতর্কতা বন্ধ করতে DSL যোগ করা হয়েছে (Ic4deb, b/331237001)
automaticGenerationDuringBuildবন্ধ থাকলে, বেঞ্চমার্ক যাতে জেনারেট করা বেসলাইন প্রোফাইল ব্যবহার করে তা নিশ্চিত করার জন্য সমাধান (Ic144f, b/333024280)nonMinifiedবা বেঞ্চমার্ক বিল্ড টাইপ কাস্টমাইজ করার সময় বেসলাইন প্রোফাইল জেনারেশন ও বেঞ্চমার্কিং চালু করতেBaselineProfileগ্রেডেল প্লাগ-ইন প্রপার্টি ওভাররাইড সংক্রান্ত সমস্যার সমাধান করুন। (Ib8f05, b/324837887)- AGP 8.3.0-alpha15-এর আগের AAR-এ লাইব্রেরি বেসলাইন প্রোফাইল অন্তর্ভুক্ত করার সমস্যা সমাধান করা হয়েছে। (I1d2af, b/313992099)
- জেনারেট করার টাস্কের শেষে ফিক্সড বেসলাইন ও স্টার্ট-আপ প্রোফাইল আউটপুট URL। (I802e5, b/313976958)
1.2.0 ভার্সনের পর থেকে অন্যান্য গুরুত্বপূর্ণ পরিবর্তন
- ট্রেস ক্যাপচার
- লগ করা সতর্কতার জন্য কোনও সমস্যা থেকে perfetto শুরু করার সময় EXITCODE 2 সমস্যা কম হয়েছে
- বেঞ্চমার্কে ডিফল্ট হিসেবে AIDL ট্রেসিং চালু করুন(API 28 প্রয়োজন) (Ia0af2, b/341852305)
- বেঞ্চমার্কে ডিফল্ট হিসেবে পোর্টার ট্যাগ ট্রেসিং চালু করুন। এটি, উদাহরণস্বরূপ, ওয়েক লক ট্রেসপয়েন্ট ক্যাপচার করে। (Icfe44, b/286551983)
- ধীরগতির ডিভাইসে ট্রেসিং শুরু করার সময় ক্র্যাশ এড়াতে ট্রেস ক্যাপচার শুরুর টাইমআউট বাড়ানো হয়েছে (I98841, b/329145808)
- পাবলিক API
PerfettoTraceProcessor.Session.queryMetricsJSON, textproto এবং proto বাইনারি (ডিকোড করা হয়নি) ভেরিয়েন্ট সহ API যোগ করা হয়েছে। এগুলি আপনাকেTraceProcessor(I54d7f, b/304038382)-এ বিল্ট-ইন মেট্রিক কোয়েরি করতে দেয় - ট্রেসের শুরুতে ডেটা মিস হওয়ার ঝুঁকি কমাতে Perfetto ট্রেস রেকর্ডে ব্লকিং স্টার্ট চালু করুন। শুধুমাত্র API 33+ ভার্সনে কাজ করে। (Ie6e41, b/310760059)
- JSON আউটপুট
- JSON আউটপুটে বেঞ্চমার্ক প্রসঙ্গে অতিরিক্ত তথ্য যোগ করা হয়েছে:
context.artMainlineVersion- Art মেইনলাইন মডিউলের পূর্ণসংখ্যা ভার্সন (ডিভাইসে থাকলে,-1না থাকলে)context.build.id- Equals android.os.Build.IDcontext.build.version.codename- android.os.Build.VERSION.CODENAME-এর সমানcontext.build.version.abbreviatedCodename- প্রি-রিলিজ কোডনেমের প্রথম অক্ষরের সাথে সম্পর্কিত (রিলিজ বিল্ড সহ) (Ie5020)
- প্রোফাইলিং ট্রেসের (যেমন, Perfetto, মেথড ট্রেস) চারপাশে আরও সহজ টুলিংয়ের জন্য JSON আউটপুটে
profilerOutputতালিকা যোগ করা হয়েছে (I05ddd, b/332604449) - বেঞ্চমার্ক মডিউলে Android Test Orchestrator ব্যবহার করা হলে একটি সতর্কতা যোগ করা হয়েছে, কারণ এর ফলে প্রতি মডিউল আউটপুট JSON ফাইল বারবার ওভাররাইট হয়ে যাবে। (Ia1af6, b/286899049)
- ফাইলের নাম ২০০ অক্ষরের বেশি হলে, ফাইল লেখা বা পোস্ট-প্রসেসিংয়ের সময় অস্পষ্ট ক্র্যাশ এড়াতে থ্রো করুন। (I4a5ab)
- JSON আউটপুটে বেঞ্চমার্ক প্রসঙ্গে অতিরিক্ত তথ্য যোগ করা হয়েছে:
ভার্সন 1.3.0-rc01
৭ আগস্ট, ২০২৪
androidx.benchmark:benchmark-*:1.3.0-rc01 রিলিজ করা হয়েছে। ভার্সন 1.3.0-rc01-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- নির্দেশনা-বহির্ভূত ইভেন্টের জন্য
androidx.benchmark.cpuEventCounter-এর মাধ্যমে ভুল ভ্যালু তৈরি হওয়ার সমস্যার সমাধান করা (I7386a, b/286306579) resumeTiming/runWithTimingDisabledঠিক করুন যাতে মেট্রিক অগ্রাধিকারের ক্রম বজায় থাকে এবং কম অগ্রাধিকারের মেট্রিক পজ/রিসিউম করার ফলে বেশি অগ্রাধিকারের মেট্রিক ফলাফলের উপর প্রভাব উল্লেখযোগ্যভাবে কমে যায়। যেমন,cpuEventCounter.enableইন্সট্রুমেন্টেশন আর্গুমেন্টের মাধ্যমে cpu perf কাউন্টার ব্যবহার করলে, পজ/রিজিউম করার সময় timeNs আর উল্লেখযোগ্যভাবে কমে না। (I39c2e, b/286306579, b/307445225)- স্ট্যাক স্যাম্পলিংয়ের সম্ভাবনা কমে যায়, এর ফলে
measureRepeatedOnMainThread-এর কারণে মূল থ্রেড হার্ড টাইম-আউট হওয়ার সম্ভাবনা কমে যায়, কারণ মূল থ্রেড থেকে স্ট্যাক স্যাম্পলিং কনভার্সন সরিয়ে দেওয়া হয়। (I487a8, b/342237318) - নতুন প্ল্যাটফর্ম API-তে অ্যাক্সেস সংক্রান্ত ম্যানুয়াল আউটলাইন সরিয়ে দেওয়া হয়েছে, কারণ AGP 7.3 বা তার পরের যেকোনও ভার্সনের (যেমন, R8 ভার্সন 3.3) সাথে R8 ব্যবহার করার সময় API মডেলিংয়ের মাধ্যমে এটি অটোমেটিক হয়ে যায় এবং AGP 8.1 বা তার পরের যেকোনও ভার্সন (যেমন, D8 ভার্সন 8.1) ব্যবহার করার সময় সব বিল্ডের ক্ষেত্রে এটি অটোমেটিক হয়ে যায়। যেসব ক্লায়েন্ট AGP ব্যবহার করছেন না, তাদের D8 ভার্সন 8.1 বা তার পরবর্তী ভার্সনে আপডেট করার পরামর্শ দেওয়া হচ্ছে। আরও জানতে এই নিবন্ধ পড়ুন। (I9496c, b/345472586)
- instr arg হিসেবে প্যাকেজের নাম পাঠাতে agp ভার্সন চেক যোগ করা হয়েছে। AGP 8.4.0-এর আগের ভার্সনে, টার্গেট অ্যাপ প্যাকেজের নাম ইনস্ট্রুমেন্টেশন আর্গুমেন্টের মাধ্যমে ইনস্ট্রুমেন্টেশন অ্যাপে পাঠানো যাবে না। (0c72a3f)
ভার্সন 1.3.0-beta02
১০ জুলাই, ২০২৪
androidx.benchmark:benchmark-*:1.3.0-beta02 রিলিজ করা হয়েছে। 1.3.0-beta02 ভার্সনে এইসব কমিট রয়েছে।
সমস্যার সমাধান
- একটি সতর্কতা লগ করার জন্য Perfetto শুরু করার সময় EXITCODE
2সুন্দরভাবে পরিচালনা করুন, তবে এগিয়ে যান।
ভার্সন 1.3.0-beta01
১২ জুন, ২০২৪
androidx.benchmark:benchmark-*:1.3.0-beta01 রিলিজ করা হয়েছে। 1.3.0-beta01 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- ধারাবাহিকতা বজায় রাখতে
MethodTracing.affectsMeasurementOnThisDevice-এর নাম পরিবর্তন করেAFFECTS_MEASUREMENT_ON_THIS_DEVICEকরা হয়েছে। (I1bdfa) - মাইক্রোবেঞ্চমার্কে ডেড কোড এলিমিনেশন প্রতিরোধ করতে এক্সপেরিমেন্টাল
BlackHole.consume()API যোগ করা হয়েছে। (If6812, b/286091643) - মাইক্রোবেঞ্চমার্ক এখন সঠিকভাবে থ্রো করবে যাতে মেথড ট্রেসিং পরিমাপের সাথে ইন্টারফেয়ার না করে। কিছু ডিভাইসে এটি ঘটে যখন মেথড ট্রেসিং জোর করে চালু করা হয় (ইনস্ট্রুমেন্টেশন আর্গুমেন্ট বা
MicrobenchmarkConfig-এর মাধ্যমে), এবং যদি মেথড ট্রেসের পরে পরিমাপের চেষ্টা করা হয়। প্রভাবিত ডিভাইসগুলি API 26-30 বা নির্দিষ্ট ART মেইনলাইন মডিউল ভার্সন চালাচ্ছে যা এই ইন্টারফারেন্স দ্বারা প্রভাবিত এবং রানটাইমেProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice-এর মাধ্যমে শনাক্ত করা যেতে পারে। (Iafb92, b/303660864)
সমস্যার সমাধান
- সর্বাধিক agp ভার্সন 9.0.0-alpha01-এ আপডেট করার সাজেশন দেওয়া হয়েছে। (I5bbb0)
- বেঞ্চমার্ক প্রসঙ্গে কম্পাইলেশন মোড যোগ করা হয়েছে (If5612, b/325512900)
- ডিফল্ট হিসেবে AIDL ট্রেসিং চালু করুন (API 28 প্রয়োজন) (Ia0af2, b/341852305)
- JSON আউটপুটে বেঞ্চমার্ক প্রসঙ্গে অতিরিক্ত তথ্য যোগ করা হয়েছে:
context.artMainlineVersion- Art মেইনলাইন মডিউলের পূর্ণসংখ্যা ভার্সন (ডিভাইসে থাকলে, -1 অন্যথায়)context.build.id- সমানandroid.os.Build.IDcontext.build.version.codename-android.os.Build.VERSION.CODENAME-এর সমানcontext.build.version.abbreviatedCodename- প্রি-রিলিজ কোডনেমের প্রথম অক্ষরের সাথে সম্পর্কিত (এমনকি রিলিজ বিল্ডেও) (Ie5020)
androidx.benchmark.profiling.sampleDurationSeconds(Ib1d53) মেনে চলার জন্যStackSamplingসংক্রান্ত সমস্যার সমাধান করে- ম্যাক্রো->সাধারণ নির্ভরতা পরিবর্তন করে
api()করুন, যাতেPerfettoTraceওPerfettoConfig-এর মতো উদাহরণ ব্যবহার করা সহজ হয়। (Icdae3, b/341851833) mergeArtProfileএবংmergeStartupProfileটাস্ক যাতে সবসময় বেসলাইন প্রোফাইল জেনারেশনের জন্য অপেক্ষা করে তা নিশ্চিত করুন। (I623d6, b/343086054)- ভেরিয়েন্ট চালু করা উচিত কিনা তা সিদ্ধান্ত নেওয়ার সময় ভেরিয়েন্ট চালু করার স্ট্যাটাস বিবেচনা করুন। (I5d19e, b/343249144)
- পারফেট্টো ট্রেস প্রসেসরের জন্য ডিফল্ট স্টার্ট টাইমআউট বাড়ানো হয়েছে। (I87e8c, b/329145808)
ভার্সন 1.3.0-alpha05
১৪ মে, ২০২৪
androidx.benchmark:benchmark-*:1.3.0-alpha05 রিলিজ করা হয়েছে। 1.3.0-alpha05 ভার্সনে এইসব কমিট রয়েছে।
সমস্যার সমাধান
- ম্যাক্রোবেঞ্চ মেট্রিক সব ইটারেশনের জন্য শূন্য ভ্যালু রিটার্ন করলে আরও স্পষ্ট ব্যতিক্রম থ্রো করা (Iab58f, b/314931695)
- মাইক্রোবেঞ্চ প্রোগার্ড নিয়মে অতিরিক্ত ওয়ার্কঅ্যারাউন্ড নিয়ম যোগ করা হয়েছে, যার মধ্যে লিসেনার নিয়ম এবং অন্যান্য লক্ষ্য করা সতর্কতা / সমস্যার জন্য সহায়তা অন্তর্ভুক্ত। (I14d8f, b/329126308, b/339085669)
- ম্যাক্রোবেঞ্চমার্কের সময় মেথড ট্রেসিং আলাদা ফেজ হিসেবে রান করে এবং এটি আর পরিমাপকে প্রভাবিত করে না। (If9a50, b/285912360, b/336588271)
- ড্রপ শেডার ব্রডকাস্ট ব্যর্থতার মেসেজে অতিরিক্ত ডিবাগিং সাজেশন যোগ করা হয়েছে। (I5efa6, b/325502725)
ভার্সন 1.3.0-alpha04
১ মে, ২০২৪
androidx.benchmark:benchmark-*:1.3.0-alpha04 রিলিজ করা হয়েছে। ভার্সন 1.3.0-alpha04-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- এক্সপেরিমেন্টাল
MacrobenchmarkRule#measureRepeatedভেরিয়েন্ট যোগ করা হয়েছে যা সম্পূর্ণ কাস্টমাইজ করা Perfetto ট্রেস রেকর্ডিংয়ের জন্য কাস্টমPerfettoConfigনেয়। মনে রাখবেন, ভুলভাবে কনফিগার করা কনফিগারেশনের কারণে বিল্ট-ইন মেট্রিক ক্লাস কাজ নাও করতে পারে। (Idfd3d, b/309841164, b/304038384) - স্পষ্টতার জন্য
PowerMetric.deviceSupportsPowerEnergy-এর নাম পরিবর্তন করেPowerMetric.deviceSupportsHighPrecisionTrackingকরুন (I5b82f) - ডিভাইসের পাওয়ার পরিমাপ করার ক্ষমতার উপর ভিত্তি করে বেঞ্চমার্ক পরিবর্তন করা বা এড়িয়ে যাওয়ার সুবিধা চালু করতে
PowerMetric.deviceBatteryHasMinimumCharge()এবংPowerMetric.deviceSupportsPowerEnergy()যোগ করা হয়েছে। (I6a591, b/322121218)
সমস্যার সমাধান
- আগের বেসলাইন প্রোফাইলের সাথে তুলনা যোগ করা হয়েছে (I824c8, b/269484510)
- সতর্কতা বন্ধ করতে DSL যোগ করা হয়েছে (Ic4deb, b/331237001)
- বেঞ্চমার্ক ভেরিয়েন্ট বন্ধ করা থাকলে, ব্যতিক্রম থেকে তথ্য লগে পরিবর্তন করা হয়েছে (I8a517, b/332772491)
- Macrobenchmark-এর জন্য মেথড ট্রেস ক্যাপচার করার প্রসেস আরও সহজ করুন, এটি প্রকৃত
measureBlock()-এর সময়সীমার মধ্যে সীমাবদ্ধ। আগে, এটি টার্গেট প্রসেস লঞ্চে শুরু হয়েছিল এবং শুধুমাত্র কোল্ড স্টার্ট (Iee85a, b/300651094) কাজ করত - Perfetto ট্রেস প্রসেসর শুরু হতে দেরি হলে ক্র্যাশ হওয়া এড়ান (I98841, b/329145808)
ভার্সন 1.3.0-alpha03
১৭ এপ্রিল, ২০২৪
androidx.benchmark:benchmark-*:1.3.0-alpha03 রিলিজ করা হয়েছে। 1.3.0-alpha03 ভার্সনে এইসব কমিট রয়েছে।
নতুন ফিচার
- JSON, textproto এবং proto বাইনারি (আনডিকোড করা) ভেরিয়েন্ট সহ পাবলিক API
PerfettoTraceProcessor.Session.queryMetricsAPI যোগ করে। এগুলি আপনাকে TraceProcessor-এ বিল্ট-ইন মেট্রিক (I54d7f, b/304038382) কোয়েরি করতে দেয় - প্রোফাইলিং ট্রেস (যেমন, পারফেক্টো, মেথড ট্রেস) সংক্রান্ত টুলিং আরও সহজ করতে JSON আউটপুটে
profilerOutputযোগ করা হয়েছে। (I05ddd, b/332604449) - বেঞ্চমার্ক Perfetto কনফিগারেশনে পাওয়ার ট্যাগ যোগ করা হয়েছে। এটি, উদাহরণস্বরূপ, ওয়েক লক ট্রেসপয়েন্ট ক্যাপচার করে। (Icfe44, b/286551983)
- inst আর্গুমেন্ট
androidx.benchmark.profiling.skipWhenDurationRisksAnrযোগ করা হয়েছে, প্রত্যাশিত সময়সীমার কারণে ANR হতে পারে বলে মেথড ট্রেস এড়িয়ে যাওয়া বন্ধ করতে এটি false হিসেবে সেট করা যেতে পারে - CI রান করার সময় এটি এড়িয়ে যাওয়ার জন্য বিশেষভাবে সাজেস্ট করা হয়। - পরীক্ষামূলক inst আর্গুমেন্ট যোগ করা হয়েছে
androidx.benchmark.profiling.perfCompare.enable, পরিমাপ ও প্রোফাইলিং ফেজের মধ্যে তুলনা করার সময় সেট করতে এটি true হিসেবে সেট করুন। যেমন, মেথড ট্রেসিংয়ের ওভারহেড মূল্যায়ন করার ক্ষেত্রে উপযোগী। (I61fb4, b/329146942)
API-তে পরিবর্তন
TraceSectionMetric.Mode-কে সিল করা ক্লাসে পরিবর্তন করা হয়েছে যাতে এক্সহস্টিভ when স্টেটমেন্ট (I71f7b) না ভেঙে ভবিষ্যতে এক্সপ্যানশন চালু করা যায়TraceSectionMetric.Mode.Averageও.Countযোগ করা হয়েছে এবং আর্গুমেন্টগুলি আবার সাজানো হয়েছে যাতে আরও সাধারণ আর্গুমেন্ট (মোড) আর্গুমেন্ট তালিকায় আগে থাকে, এর ফলে প্যারামিটারের নাম নির্দিষ্ট করার প্রয়োজনীয়তা কমে যায়। (Ibf0b0, b/315830077, b/322167531)- রিটার্ন টাইপ (I42595) ম্যাচ করতে
Metric.getResult-এর নাম পরিবর্তন করেgetMeasurementsকরা হয়েছে
সমস্যার সমাধান
automaticGenerationDuringBuildবন্ধ থাকলে বেঞ্চমার্ক যাতে জেনারেট করা বেসলাইন প্রোফাইল ব্যবহার করে তা নিশ্চিত করার জন্য সমাধান (Ic144f, b/333024280)nonMinifiedবা বেঞ্চমার্ক বিল্ড টাইপ কাস্টমাইজ করার সময় বেসলাইন প্রোফাইল জেনারেশন ও বেঞ্চমার্কিং চালু করতেBaselineProfileগ্রেডেল প্লাগ-ইন প্রপার্টি ওভাররাইড সংক্রান্ত সমস্যার সমাধান করুন। (Ib8f05, b/324837887)- ম্যাক্রোবেঞ্চমার্কে মেথড ট্রেস ফ্লাশ করার সমস্যা সমাধান করা হয়েছে, যাতে মেথড ট্রেস সম্পূর্ণভাবে ক্যাপচার করা যায় এবং বৈধ হয়, এমনকি ধীরগতির ডিভাইসেও। (I6349a, b/329904950)
- ট্রেসের শুরুতে ডেটা মিস হওয়ার ঝুঁকি কমাতে Perfetto ট্রেস রেকর্ডে ব্লকিং স্টার্ট চালু করুন। শুধুমাত্র API 33+-এ কাজ করে। (Ie6e41, b/310760059)
- বেঞ্চমার্ক মডিউলে Android Test Orchestrator ব্যবহার করা হলে একটি সতর্কতা যোগ করা হয়েছে, কারণ এর ফলে প্রতি মডিউলের আউটপুট JSON ফাইল বারবার ওভাররাইট হয়ে যাবে। (Ia1af6, b/286899049)
- Studio আউটপুটে সামঞ্জস্য বজায় রাখার জন্য ডিভাইসের লোকাল (I3e921, b/313496656) উপেক্ষা করে ',' (কমা) হাজার বিভাজক ব্যবহার করতে বাধ্য করা
TraceSectionMetricএখনTrace.{begin|end}AsyncSectionব্যবহার করে তৈরি করা স্লাইস সাপোর্ট করে। (I91b32, b/300434906)- স্টার্ট-আপ শনাক্তকরণ সংক্রান্ত সব ব্যর্থতায় log.w / ব্যতিক্রম লেবেল যোগ করা হয়েছে। এটি বর্তমান আচরণ পরিবর্তন করে না (তাই কিছু ত্রুটি দেখায় এবং অন্যান্যগুলি স্টার্টআপ শনাক্ত করতে নীরবে ব্যর্থ হয়), শুধু এটিকে আরও বোধগম্য করে তোলে। সাধারণত, যেগুলি
Log.w()এবং স্টার্টআপ মেট্রিক্স রিপোর্ট করতে ব্যর্থ হয়, সেগুলি হল যেখানে নন-ফ্রেম ইভেন্টগুলি অনুপস্থিত থাকে, ফ্রেম টাইমিং তথ্য (UI/RT স্লাইস থেকে) ছাড়া স্টার্টআপ শনাক্ত করা হলে ব্যতিক্রমগুলি থ্রো করা হয়। (Id240f, b/329145809) - হস্তক্ষেপ কমাতে Macrobenchmark চালানোর আগে ব্যাকগ্রাউন্ড dexopt জব বাতিল করুন। (I989ed)
FrameTimingMetric-এframeCountপরিমাপ যোগ করা হয়েছে যাতে এমন পরিস্থিতি খুঁজে পেতে সাহায্য করা যায় যেখানে ফ্রেমের সংখ্যা পরিবর্তন হওয়ার কারণে পরিমাপ পরিবর্তন হয় (নতুন অ্যানিমেশন যোগ করা হয়েছে, বাতিল করা সংক্রান্ত সমস্যা সমাধান করা হয়েছে)। (I1e5aa)- ডকুমেন্টে উপলভ্য থাকলে, ট্র্যাকিংয়ের জন্য
frameOverrunMsহল পছন্দের মেট্রিক এবং কেন তা স্পষ্ট করা হয়েছে। (I18749, b/329478323)
ভার্সন 1.3.0-alpha02
২০ মার্চ, ২০২৪
androidx.benchmark:benchmark-*:1.3.0-alpha02 রিলিজ করা হয়েছে। 1.3.0-alpha02 ভার্সনে এইসব কমিট রয়েছে।
নতুন ফিচার
এম্বেড করা ProGuard নিয়মের মাধ্যমে মাইক্রোবেঞ্চে পরীক্ষামূলক R8 কাজ করে। মনে রাখবেন যে এই সহায়তা এক্সপেরিমেন্টাল এবং লাইব্রেরি মডিউল টেস্ট ছোট করার জন্য AGP 8.3 প্রয়োজন। আপনার বেঞ্চমার্ক মডিউলের
build.gradle-এ R8 মিনিফিকেশন/অপ্টিমাইজেশন চালু করতে নিম্নলিখিতগুলি ব্যবহার করুন, যা ওয়ার্কলোডের উপর নির্ভর করে পারফর্ম্যান্স উল্লেখযোগ্যভাবে বাড়িয়ে দেবে। (I738a3, b/184378053)android { buildTypes.release.androidTest.enableMinification = true }
সমস্যার সমাধান
- মাইক্রোবেঞ্চ আউটপুট থেকে আলাদা লাইনে থাকার জন্য মেথড ট্রেসিং সংক্রান্ত সতর্কতা ঠিক করে। (I0455c, b/328308833)
ভার্সন 1.3.0-alpha01
২১ ফেব্রুয়ারি, ২০২৪
androidx.benchmark:benchmark-*:1.3.0-alpha01 রিলিজ করা হয়েছে। 1.3.0-alpha01 ভার্সনে এইসব কমিট আছে।
API-তে পরিবর্তন
- অপ্রয়োজনীয় শব্দ 'should' এড়াতে
MicrobenchmarkConfigবুলিয়ান প্যারামিটারের নাম পরিবর্তন করা হয়েছে (Ia8f00, b/303387299) BenchmarkRule.measureRepeatedOnMainThreadযোগ করা হয়েছে যাতে মূল থ্রেড বেঞ্চমার্ক (যেমন, ভিউ বা কম্পোজ UI-এর সাথে সম্পর্কিত) ANR ট্রিগার করা এড়াতে পারে, বিশেষ করে CI-তে বড় সুইট চলাকালীন। (I5c86d)FrameTimingGfxInfoMetricযোগ করা হয়েছে, এটিFrameTimingMetric-এর একটি পরীক্ষামূলক বিকল্প প্রয়োগ। এর পরিমাপ সরাসরি প্ল্যাটফর্ম থেকে আসে, Perfetto ট্রেস থেকে এক্সট্র্যাক্ট করা হয় না। (I457cb, b/322232828)- আলাদা আলাদা
warmUpইটারেশন চলাকালীন ART প্রোফাইল ডাম্প করার ক্ষমতা যোগ করুন। (I17923) TraceSectionMetricAPI-তে একাধিক পরিবর্তন করা হয়েছে:Mode.Min,Mode.Maxযোগ করুন- মেট্রিক লেবেল হিসেবে বিভাগের নাম ওভাররাইড করতে লেবেল আর্গুমেন্ট যোগ করুন
- মেট্রিকের অর্থ স্পষ্ট করতে আউটপুটে মোডের নাম যোগ করা হয়েছে
- ডিফল্ট মান পরিবর্তন করে যোগফল করা হয়েছে, কারণ এই মেট্রিক বেশিরভাগ ক্ষেত্রেই পুনরাবৃত্তিমূলক ইভেন্টের জন্য ব্যবহার করা হয় CI ব্যবহারের ক্ষেত্রে এই পরিবর্তন সম্পর্কে সচেতন থাকুন, কারণ এটি ডিসকন্টিনিউটি তৈরি করতে পারে অথবা পার্সিং ভেঙে দিতে পারে। (Ic1e82, b/301892382, b/301955938)
সমস্যার সমাধান
- ম্যানেজ করা ডিভাইস নির্দিষ্ট করা না থাকলে বেসলাইন প্রোফাইল গ্র্যাডল প্লাগ-ইনে উন্নত সমস্যার মেসেজ (Idea2b, b/313803289)
- AGP 8.3.0-alpha15-এর আগের ভার্সনে AAR-এ লাইব্রেরি বেসলাইন প্রোফাইল অন্তর্ভুক্ত করার সমস্যা সমাধান করা হয়েছে (I1d2af, b/313992099)
- জেনারেট করার টাস্কের শেষে ফিক্সড বেসলাইন ও স্টার্ট-আপ প্রোফাইল আউটপুট URL (I802e5, b/313976958)
java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)](I8dc7d, b/323601788) সমাধান করার জন্য ডেটা সোর্স টাইমআউট অ্যাডজাস্ট করা হয়েছেProfileInstaller১.৩ ছাড়া অ্যাপ বেঞ্চমার্ক করার সময় ক্র্যাশ সংক্রান্ত সমস্যা এড়াতে শেডার ড্রপিং আচরণ ওভাররাইড করার জন্য দুটি ইন্সট্রুমেন্টেশন আর্গুমেন্ট যোগ করুন:androidx.benchmark.dropShaders.enable=true/false: সব শেডার ড্রপিং (StartupMode.Coldলঞ্চে করা সহ) এড়িয়ে যেতে ব্যবহার করা যেতে পারে, বিশেষ করে এমন অ্যাপ বেঞ্চমার্ক করার সময় যা এখনও profileinstaller 1.3 ব্যবহার করে নাandroidx.benchmark.dropShaders.throwOnFailure=true/false: শেডার ড্রপ করার চেষ্টা করার সময় ব্যর্থতা সহ্য করতে ব্যবহার করা যেতে পারে, যেমন profileinstaller 1.3 (I4f573) ছাড়া অ্যাপ বেঞ্চমার্ক করার সময়
- UI থ্রেডে মেথড ট্রেসিং কয়েক সেকেন্ডের বেশি সময় নেবে বলে মনে হলে তা এড়িয়ে যান এবং থ্রো করার সময় মেথড ট্রেস ক্লিন-আপ করুন। (I6e768)
- ফাইল লেখার বা পোস্ট-প্রসেসিং করার সময় অস্পষ্ট ক্র্যাশ এড়াতে, ফাইলের নাম ২০০ অক্ষরের বেশি হলে থ্রো করুন। (I4a5ab)
- ট্রেসের শুরুতে ও শেষে শেষ না হওয়া ফ্রেম একসাথে পেয়ার করা যেতে পারে এমন সমস্যার সমাধান করা হয়েছে, যা ভুলভাবে একটি অত্যন্ত দীর্ঘ ফ্রেম হিসেবে রিপোর্ট করা হবে। (I39353, b/322232828)
- ব্যবহারকারীর বিল্ডে ART প্রোফাইল মুছে দিতে API 30-33-এ কোনও প্যাকেজ আবার ইনস্টল করার সময় API 30+-এ
--skip verificationব্যবহার করুন। এটি Play Protect-এর সেইসব সতর্কতা এড়াতে সাহায্য করে যেগুলি কিছু ডিভাইসের ক্লাসে ব্যর্থতার কারণ হয়। (Ic9e36) - System UI বা লঞ্চারের মতো সিস্টেম অ্যাপ না হলে, অ্যাপ বন্ধ করতে
am force-stopব্যবহার করুন। (I5e028) - Macrobenchmark এখন টার্গেট অ্যাপ্লিকেশনের জন্য
1 secondঅপেক্ষা করে যাতে ART প্রোফাইল ফ্লাশ করা যায় (আগে এটি500 msঅপেক্ষা করত)। (I85a50, b/316082056) - ফ্রেম তৈরি না হলে
FrameTimingMetricসংক্রান্ত সমস্যা উন্নত করা এবং সমস্যা নির্ণয় করতে সাহায্য করার জন্য মেট্রিক পার্সিং ব্যর্থ হলে সবসময় ট্রেস করার লিঙ্ক আউটপুট করা। (I956b9) FrameTimingMetric-এ ফ্রেম আইডি পার্স করতে না পারার কারণে হওয়া ক্র্যাশ সংক্রান্ত সমস্যার সমাধান করা হয়েছে, বিশেষ করে নির্দিষ্ট OEM ডিভাইসে। (Ia24bc, b/303823815, b/306235276)FrameMetrics-এ চেকের কঠোরতা শিথিল করা হয়েছে এবং সমস্যার মেসেজে আরও বিবরণ যোগ করা হয়েছে। (Iadede)
ভার্সন 1.2
ভার্সন 1.2.4
১৭ এপ্রিল, ২০২৪
androidx.benchmark:benchmark-*:1.2.4 রিলিজ করা হয়েছে। ভার্সন 1.2.4-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- বেঞ্চমার্ক ভেরিয়েন্টে বেসলাইন প্রোফাইল srcset সেট-আপ না হওয়ার সমস্যা সমাধান করে। এছাড়াও, লাইব্রেরিতে
automaticGenerationDuringBuildসংক্রান্ত সমস্যা সমাধান করে যার ফলে সার্কুলার ডিপেন্ডেন্সি হয়। (I28ab7, b/333024280) - System UI বা লঞ্চারের মতো সিস্টেম অ্যাপ না হলে, অ্যাপ বন্ধ করতে
am force-stopব্যবহার করুন। প্রসেস কিল সম্পূর্ণভাবে সফল না হওয়ার কারণে "কোল্ড স্টার্টের আগে প্যাকেজ $package অবশ্যই রান করা যাবে না!" থেকেStartupMode.COLDবেঞ্চমার্ক ক্র্যাশ করার সমস্যা এটি সমাধান করে। (I5e028)
ভার্সন 1.2.3
২৪ জানুয়ারি, ২০২৪
androidx.benchmark:benchmark-*:1.2.3 রিলিজ করা হয়েছে। ভার্সন ১.২.৩-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- AGP ভার্সন 8.3.0 বা তার পরবর্তী যেকোনও ভার্সন হলে, বেসলাইন প্রোফাইল Gradle প্লাগ-ইন থেকে ব্যতিক্রম সরিয়ে দেওয়া হয়েছে।
- AGP 8.3.0-alpha15-এর আগে AAR-এ লাইব্রেরি বেসলাইন প্রোফাইল অন্তর্ভুক্ত করার জন্য সমাধান।
ভার্সন ১.২.২
১ ডিসেম্বর, ২০২৩
androidx.benchmark:benchmark-*:1.2.2 রিলিজ করা হয়েছে। ভার্সন 1.2.2-এ এইসব কমিট রয়েছে।
বেসলাইন প্রোফাইল
- এক্সিকিউশন লগে বেসলাইন প্রোফাইল আউটপুট ফাইলের পাথ লোকাল ফাইল URI (aosp/2843918, aosp/2853665, b/313976958) হিসেবে দেখানো হবে
ভার্সন 1.2.1
১৫ নভেম্বর, ২০২৩
androidx.benchmark:benchmark-*:1.2.1 রিলিজ করা হয়েছে। 1.2.1 ভার্সনে এইসব কমিট রয়েছে।
নতুন ফিচার
- ব্যবহারকারী টেস্ট ভ্যারিয়েন্ট বন্ধ করে দিলে উন্নত সমস্যার মেসেজ দেখানো হয় (b/307478189)
- AS টেস্ট রান ইন্টিগ্রেশন (b/309805233), (b/309116324) সাপোর্ট করার জন্য প্রপার্টি যোগ করা হয়েছে
ভার্সন ১.২.০
১৮ অক্টোবর, ২০২৩
androidx.benchmark:benchmark-*:1.2.0 রিলিজ করা হয়েছে। ভার্সন 1.2.0-এ এইসব কমিট রয়েছে।
1.1.0 ভার্সনের পর থেকে গুরুত্বপূর্ণ পরিবর্তন
বেসলাইন প্রোফাইল
- নতুন বেসলাইন প্রোফাইল Gradle প্লাগ-ইন আপনার টেস্ট ও বিল্ড ওয়ার্কফ্লোতে বেসলাইন প্রোফাইল ক্যাপচার ও অন্তর্ভুক্ত করার কাজ অটোমেট করে।
BaselineProfileRule.collectএখন স্থিতিশীল, আগের পরীক্ষামূলকBaselineProfileRule.collectBaselineProfileAPI-এর একটি স্ট্রিমলাইন ও সরলীকৃত ভার্সন- শুধু
packageNameউল্লেখ করুন এবং আপনার অ্যাপ ড্রাইভ করুন
- শুধু
- যেসব লাইব্রেরি বেসলাইন প্রোফাইল তৈরি করে, সেগুলির জন্য আপনি এখন কোডে (
BaselineProfileRule.collectআর্গুমেন্ট) অথবা আরও সহজে Gradle প্লাগ-ইনে তৈরি নিয়ম ফিল্টার করতে পারবেন - সমাধান করা সমস্যা
- Android U+ (Id1392, b/277645214)-এ বেসলাইন প্রোফাইল কালেকশন সংক্রান্ত সমস্যার সমাধান করা হয়েছে
Macrobenchmark
- সংকলন
- Macrobenchmark এখন প্রতিটি কম্পাইলের জন্য কম্পাইলেশন স্টেট সঠিকভাবে সম্পূর্ণ রিসেট করে - এর জন্য Android 14-এর আগের ভার্সনে APK আবার ইনস্টল করতে হয়, তাই আপনি যদি পরিমাপ করা হচ্ছে এমন স্টেট (যেমন ব্যবহারকারীর লগ-ইন) বজায় রাখতে চান, তাহলে Android 14+ ভার্সনে বেঞ্চমার্কিং করার জন্য বিশেষভাবে সাজেস্ট করা হয়।
- এছাড়াও, আপনি আলাদাভাবে অ্যাপ কম্পাইলেশন কন্ট্রোল করে এবং
CompilationMode.Ignore()বা ইনস্ট্রুমেন্টেশন আর্গুমেন্ট-এর মাধ্যমে কম্পাইলেশন এড়িয়ে গিয়ে এই সমস্যার সমাধান করতে পারেন
ইনস্ট্রুমেন্টেশন আর্গুমেন্ট
- দ্রুত যাচাইকরণ রান (যেমন, বেঞ্চমার্ক তৈরি করার সময় বা প্রিসাবমিটে) করার জন্য
androidx.benchmark.dryRunMode.enableইনস্ট্রুমেন্টেশন আর্গুমেন্ট (যা আগে থেকেই মাইক্রোবেঞ্চমার্কে উপলভ্য) সংক্রান্ত সহায়তা androidx.benchmark.profiling.mode=StackSamplingওMethodTracing-এর জন্য সহায়তা।- রানটাইম ফিল্টারিং বেসলাইন প্রোফাইল বনাম ম্যাক্রোবেঞ্চমার্ক নিয়ম পরীক্ষা করার অনুমতি দিতে
androidx.benchmark.enabledRulesযোগ করা হয়েছে - tracing-perfetto-এর মাধ্যমে ট্রেসিং চালু করতে
androidx.benchmark.perfettoSdkTracing.enableআর্গুমেন্ট যোগ করা হয়েছে, যেমন, কম্পোজিশন রিকম্পোজিশন ট্রেসিং। মনে রাখবেন যেStartupMode.COLD-এর সাথে ব্যবহার করা হলে, টাইমিং উল্লেখযোগ্যভাবে প্রভাবিত হবে কারণ অ্যাপ স্টার্টআপের সময় ট্রেসিং লাইব্রেরি লোড এবং চালু করা হয়।
- দ্রুত যাচাইকরণ রান (যেমন, বেঞ্চমার্ক তৈরি করার সময় বা প্রিসাবমিটে) করার জন্য
প্রয়োজনীয়তা
- প্রোফাইল ক্যাপচার / রিসেট এবং শেডার ক্যাশে মুছে ফেলার সুবিধা চালু করতে, Macrobenchmark-এর জন্য এখন টার্গেট অ্যাপে
ProfileInstaller1.3.0 বা তার চেয়ে উন্নত ভার্সন প্রয়োজন।
- প্রোফাইল ক্যাপচার / রিসেট এবং শেডার ক্যাশে মুছে ফেলার সুবিধা চালু করতে, Macrobenchmark-এর জন্য এখন টার্গেট অ্যাপে
নতুন এক্সপেরিমেন্টাল মেট্রিক API
- পরীক্ষামূলক
TraceSectionMetricযোগ করা হয়েছে, যা আপনার অ্যাপেরtrace("") {}ব্লক থেকে সহজ টাইমিং এক্সট্র্যাক্ট করার অনুমতি দেয় অথবা PerfettoTraceProcessor-এর সম্পূর্ণ কোয়েরি ক্ষমতা ব্যবহার করার জন্য TraceMetric। - পাওয়ার ব্যবহারের তথ্য ক্যাপচার করতে পরীক্ষামূলক
PowerMetricযোগ করা হয়েছে - পৃষ্ঠা সংক্রান্ত ত্রুটি গণনা করতে পরীক্ষামূলক
MemoryCountersMetricযোগ করা হয়েছে - পরীক্ষামূলক
PerfettoTraceProcessorAPI যোগ করা হয়েছে, যা সিস্টেম ট্রেস (Perfetto ট্রেস নামেও পরিচিত) থেকে মেট্রিক এক্সট্র্যাক্ট করার জন্য ইন্টার্নালি ব্যবহার করা হয়
- পরীক্ষামূলক
সমাধান করা
- একাধিক APK (যেমন, অ্যাপ বান্ডেল থেকে) থেকে ইনস্টল করা অ্যাপ থেকে প্রোফাইল ইনস্টল বা এক্সট্র্যাক্ট করার সময় ক্র্যাশ হওয়ার সমস্যা সমাধান করা হয়েছে।
- অসামঞ্জস্যপূর্ণ ফ্রেম আইডি সহ ফ্রেম উপেক্ষা করে
FrameTimingMetricঠিক করা হয়েছে (সাধারণত, API 31+-এ রিপল চলাকালীন ফ্রেম) (I747d2, b/279088460) - ৬৪ এমবি-এর বেশি ট্রেসে পার্সিং সংক্রান্ত সমস্যার সমাধান করা হয়েছে (Ief831, b/269949822)
- ডিভাইসের (বিশেষত এমুলেটর) OS ইমেজ ট্রেসিং বা কম্পাইলেশনের জন্য সঠিকভাবে কনফিগার করা না থাকলে, সেই সংক্রান্ত সমস্যার সমাধান করা হয়েছে
- ব্যাটারি নেই এমন ডিভাইসের জন্য ব্যাটারি লেভেল চেক করা এড়িয়ে যান (মাইক্রো ও ম্যাক্রো)
- ফাইল আউটপুটে উন্নতি, ভুল আউটপুট ডিরেক্টরির জন্য আরও স্পষ্ট ত্রুটি এবং আরও নিরাপদ ডিফল্ট
- শেডার ক্যাশে (
MacrobenchmarkScope.dropShaderCache-এর মাধ্যমেও দেখানো হয়) ক্রমাগত ড্রপ করার মাধ্যমেStartupMode.COLD-এর স্টেবিলিটি উন্নত করা হয়েছে startActivityAndWait-এর জন্য লিনব্যাক ফলব্যাক ঠিক করা হয়েছে।
Microbenchmark
- ফিচার
- প্রোফাইলিং অন্যান্য মেট্রিকের পরে একটি আলাদা ফেজে সরানো হয়েছে, তাই একটি টেস্ট রান সঠিক টাইমিং এবং প্রোফাইলিং ফলাফল উভয়ই দেখাতে পারে।
- এক্সপেরিমেন্টাল API
- কাস্টম মেট্রিক নির্ধারণ এবং ট্রেসিং ও প্রোফাইলিং কনফিগার করার জন্য পরীক্ষামূলক
MicrobenchmarkConfigAPI যোগ করা হয়েছে। মেথড ট্রেস বা ট্রেসপয়েন্ট ক্যাপচার করতে ব্যবহার করা যেতে পারে (তবে ট্রেসিং ওভারহেড সম্পর্কে সচেতন থাকুন)। - JUnit ছাড়া
BenchmarkRuleথেকে আলাদাভাবেBenchmarkStateকন্ট্রোল করার জন্য পরীক্ষামূলক API যোগ করা হয়েছে - বেঞ্চমার্ক API থেকে আলাদা, কাস্টম কনফিগারেশন সহ Perfetto ট্রেস ক্যাপচার করার সুবিধা চালু করতে পরীক্ষামূলক
PerfettoTraceরেকর্ড যোগ করা হয়েছে।
- কাস্টম মেট্রিক নির্ধারণ এবং ট্রেসিং ও প্রোফাইলিং কনফিগার করার জন্য পরীক্ষামূলক
- সমাধান করা সমস্যা
- Android Studio বেঞ্চমার্ক আউটপুটে লিডিং হোয়াইটস্পেস না থাকার সমস্যা সমাধানের বিকল্প।
- Android Studio বেঞ্চমার্ক আউটপুটে সতর্কতা প্রিন্ট করা না গেলে সেই সমস্যার সমাধান করা হয়েছে।
- Android 13 (API 33) ও এর পরের যেকোনও ভার্সনে
SampledProfilingক্র্যাশ হওয়ার সমস্যা সমাধান করা হয়েছে। IsolationActivityও Perfetto ট্রেসিং এড়িয়ে গিয়েdryRunMode-এর পারফর্ম্যান্স অনেক উন্নত করা হয়েছে (পুরনো OS ভার্সনে ১০ গুণ পর্যন্ত দ্রুত ড্রাই রান মোড)।
ভার্সন 1.2.0-rc02
৬ অক্টোবর, ২০২৩
androidx.benchmark:benchmark-*:1.2.0-rc02 রিলিজ করা হয়েছে। ভার্সন 1.2.0-rc02-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- বেঞ্চমার্ক ফাইল আউটপুট ঠিক করুন যাতে
BaselineProfileপ্লাগ-ইন ফাইল কপি করার সময় আর কোনও সমস্যা না হয়। ডিভাইস থেকে ফাইল তৈরি ও কপি করা হয়েছে, কিন্তু সেগুলির নাম পরিবর্তন করা হয়েছে যাতে Gradle প্লাগ-ইন সেগুলি দেখতে না পায়। (I8dbcc, b/303034735, b/296453339) - ম্যাক্রোবেঞ্চমার্ক মডিউল থেকে টার্গেট অ্যাপ্লিকেশনে ইনজেক্ট করার সময়
tracing-perfettoটি লোডিং সংক্রান্ত সমস্যার মেসেজ স্পষ্ট করা হয়েছে।
ভার্সন 1.2.0-rc01
২০ সেপ্টেম্বর, ২০২৩
androidx.benchmark:benchmark-*:1.2.0-rc01 রিলিজ করা হয়েছে। ভার্সন 1.2.0-rc01-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- বেঞ্চমার্কে Perfetto SDK ট্রেসিং শুরু করতে না পারলে এখন একটি ব্যতিক্রম (প্রতিকার নির্দেশাবলী সহ) দেখানো হয়। (I6c878, b/286228781)
- ART মেথড ট্রেস -> perfetto ফর্ম্যাটে কনভার্ট করার সময় OOM ক্র্যাশ সংক্রান্ত সমস্যার সমাধান করুন। (I106bd, b/296905344)
- (Macrobenchmark) Studio টেস্ট আউটপুটে লিঙ্ক করা থাকলে মেথড ট্রেসিং লেবেল স্পষ্ট করা হয়েছে এবং ডিভাইস/হোস্টে অনন্য হওয়ার জন্য মেথড ট্রেসিং ফাইলের নাম ঠিক করা হয়েছে, যাতে একাধিক বেঞ্চমার্ক রান করা হলে সেগুলি ওভাররাইট না হয়। (I08e65, b/285912360)
- বেসলাইন প্রোফাইল ক্যাপচার করার সময় ডিভাইস চালু আছে কিনা তা নিশ্চিত করে। (I503fc)
ভার্সন 1.2.0-beta05
৩০ আগস্ট, ২০২৩
androidx.benchmark:benchmark-*:1.2.0-beta05 রিলিজ করা হয়েছে। ভার্সন 1.2.0-beta05-এ এইসব কমিট রয়েছে।
নতুন ফিচার
- Baseline Profile Gradle Plugin এখন Android Gradle Plugin 8.3 ভার্সনে কাজ করে। (aosp/2715214)
Version 1.2.0-beta04
২৩ আগস্ট, ২০২৩
androidx.benchmark:benchmark-*:1.2.0-beta04 রিলিজ করা হয়েছে। ভার্সন 1.2.0-beta04-এ এইসব কমিট রয়েছে।
নতুন ফিচার
- বেসলাইন প্রোফাইল Gradle প্লাগ-ইন এখন Android Gradle প্লাগ-ইন 8.3-এ কাজ করে। (aosp/2715214)
সমস্যার সমাধান
- আউটপুট ফাইলের নাম আরও স্যানিটাইজ করে, আউটপুট ফাইলের নামে '=' এবং ':' এড়িয়ে ফাইল লেখা / সরানো এবং টানার ক্ষেত্রে ব্যর্থতা ঠিক করুন (বিশেষ করে প্যারামিটারাইজড টেস্ট থেকে)। (I759d8)
Version 1.2.0-beta03
৯ আগস্ট, ২০২৩
androidx.benchmark:benchmark-*:1.2.0-beta03 রিলিজ করা হয়েছে। ভার্সন 1.2.0-beta03-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- শুধুমাত্র টার্গেট প্যাকেজ ফিল্টার
TraceSectionMetricকরার জন্য আর্গুমেন্ট যোগ করা হয়েছে, ডিফল্ট হিসেবে চালু থাকে (Ia219b, b/292208786)
সমস্যার সমাধান
- আর্টিফ্যাক্টের নাম ও অন্যান্য রেফারেন্সের সাথে সামঞ্জস্য বজায় রাখতে
fullTracing.enableইন্সট্রুমেন্টেশন আর্গুমেন্টের নাম পরিবর্তন করেperfettoSdkTracing.enableকরা হয়েছে।fullTracing.enableফলব্যাক হিসেবে কাজ করা চালিয়ে যাবে। (I7cc00) - বেঞ্চমার্ক লাইব্রেরির ইন্টার্নাল ট্রেসপয়েন্ট (মাইক্রোবেঞ্চমার্ক লুপ/ফেজ ট্রেসিং সহ) এখন Studio সিস্টেম ট্রেস ভিউয়ারে দেখা যাবে এবং Perfetto-তে সঠিক প্রসেসের অধীনে নেস্ট করা থাকবে। (I6b2e7, b/293510459)
- API 31+ ভার্সনে ম্যাক্রোবেঞ্চমার্ক NOT-PROFILEABLE সমস্যা সরিয়ে দেওয়া হয়েছে এবং eng/userdebug রুটেড ডিভাইসে প্রোফাইল করা যায় কিনা তা চেক করার ধাপটি এড়িয়ে যাওয়া হয়েছে। (I2abac, b/291722507)
- Dex লেআউট অপ্টিমাইজেশন ব্যবহার করার সময়, স্টার্ট-আপ প্রোফাইল নিয়মগুলিকেও এখন বেসলাইন প্রোফাইল নিয়ম হিসেবে বিবেচনা করা হয়। (aosp/2684246, b/293889189)
ভার্সন 1.2.0-beta02
২৬ জুলাই, ২০২৩
androidx.benchmark:benchmark-*:1.2.0-beta02 রিলিজ করা হয়েছে। ভার্সন 1.2.0-beta02-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- মাইক্রোবেঞ্চ কাস্টম মেট্রিক ও কনফিগারেশনের (যেমন, প্রোফাইলার ও ট্রেসিং) জন্য পরীক্ষামূলক API যোগ করা হয়েছে। (I86101, b/291820856)
সমস্যার সমাধান
- ট্রেসিংয়ের জন্য OS ভুলভাবে কনফিগার করা হলে, API 26/28 ARM64 এমুলেটরে সম্প্রতি সমাধান করা সমস্যার মতো, ম্যাক্রোবেঞ্চে সমস্যার রিপোর্ট করুন। (I0a328, b/282191686)
- এমুলেটর আপডেট করার সাজেশন দিতে কম্পাইলেশন রিসেট ব্যর্থতার বিবরণ যোগ করা হয়েছে, কারণ কিছু এমুলেটর সম্প্রতি এই সমস্যার সমাধান করেছে। (I8c815, b/282191686)
implementationনির্ভরতার পরিবর্তেandroidx.test.uiautomator:uiautomator:2.2.0-কেapiকরুন। (I1981e)
Version 1.2.0-beta01
১৮ জুলাই, ২০২৩
androidx.benchmark:benchmark-*:1.2.0-beta01 রিলিজ করা হয়েছে। 1.2.0-beta01 ভার্সনে এইসব কমিট আছে।
সমস্যার সমাধান
- Studio-তে কখনও কখনও বেঞ্চমার্ক আউটপুটে লুকানো সতর্কতা সংক্রান্ত সমস্যা সমাধান করা এবং Studio-তে বেঞ্চমার্ক আউটপুট থেকে লিডিং হোয়াইটস্পেস দেখা না যাওয়া সংক্রান্ত সমস্যার সমাধান করা (Ia61d0, b/227205461, b/286306579, b/285912360)
FrameTimingMetric-এর জন্য কমেন্ট ঠিক করা হয়েছে। সাবমেট্রিকের নামframeDurationCpuMs. (Ib097f, b/288830934).
Version 1.2.0-alpha16
২১ জুন, ২০২৩
androidx.benchmark:benchmark-*:1.2.0-alpha16 রিলিজ করা হয়েছে। ভার্সন 1.2.0-alpha16-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
BaselineProfileRule.collectBaselineProfile()API-এর নাম পরিবর্তন করেBaselineProfileRule.collect()করা হয়েছে। (I4b665)
সমস্যার সমাধান
androidx.benchmark.profiling.mode = MethodTracing-এর জন্য ম্যাক্রোবেঞ্চমার্ক সহায়তা। (I7ad37, b/285912360)- মাইক্রোবেঞ্চমার্ক প্রোফাইলিং আলাদা ফেজে সরানো হয়েছে, তাই এটি পরিমাপের পরে ক্রম অনুযায়ী হয়, এটি পরিমাপের পরিবর্তে হয় না। এছাড়াও, ক্যাপচার করা Perfetto ট্রেসে এখন
MethodTracingটি ট্রেস বিভাগ অন্তর্ভুক্ত করা হয়েছে, যদি তা থাকে। (I9f657, b/285014599) Mode.Sum-এর সাহায্যেTraceSectionMetric-এ গণনা পরিমাপ যোগ করুন। (Ic121a, b/264398606)
ভার্সন 1.2.0-alpha15
৭ জুন, ২০২৩
androidx.benchmark:benchmark-*:1.2.0-alpha15 রিলিজ করা হয়েছে। ভার্সন 1.2.0-alpha15-এ এইসব কমিট রয়েছে।
নতুন ফিচার
- টার্গেট অ্যাপ্লিকেশনের মেমরি ব্যবহার ট্র্যাক করার জন্য পরীক্ষামূলক
MemoryUsageMetricযোগ করা হয়েছে। (I56453, b/133147125, b/281749311) PerfettoTrace.record-এর সাথে সম্পূর্ণ কাস্টম Perfetto কনফিগারেশনের জন্য সহায়তা যোগ করুন (If9d75, b/280460183)- বেসলাইন প্রোফাইল জেনারেশন এড়িয়ে যেতে প্রপার্টি যোগ করা হয়েছে। ব্যবহার:
./gradlew assemble -Pandroidx.baselineprofile.skipgeneration. (I37fda, b/283447020)
API-তে পরিবর্তন
collectBaselineProfileAPI সবসময় স্থিতিশীল বেসলাইন প্রোফাইল তৈরি করে।collectStableBaselineProfileAPI সরিয়ে দেওয়া হয়েছে এবং এর পরিবর্তেcollectBaselineProfileব্যবহার করা উচিত। (I17262, b/281078707)BaselineProfileRule-এরfilterPredicateআর্গুমেন্ট পরিবর্তন করে নন-নাল করা হয়েছে, সাথে একটি সমতুল্য ডিফল্ট ভ্যালু দেওয়া হয়েছে যাতে ডিফল্ট ফিল্টার আচরণ ডকুমেন্টেশনে আরও স্পষ্ট হয়। (I3816e)
সমস্যার সমাধান
- পারফর্ম্যান্স উল্লেখযোগ্যভাবে উন্নত করতে
IsolationActivityএবংdryRunMode-এ Perfetto ট্রেসিং বন্ধ করুন, কারণ এগুলি রানটাইমের বেশিরভাগ অংশ জুড়ে ছিল। (Ie4f7d) - ইনস্ট্রুমেন্টেশন টেস্ট আর্গুমেন্ট
androidx.benchmark.profiling.mode=StackSamplingএবংandroidx.benchmark.profiling.sampleFrequencyব্যবহার করে ম্যাক্রোবেঞ্চমার্কে কল স্ট্যাক স্যাম্পলিংয়ের জন্য সহায়তা। (I1d13b, b/282188489) - Android U (API 34) এবং এমুলেটরে শেডার ড্রপ করার সময় ক্র্যাশ হওয়ার সমস্যা সমাধান করা হয়েছে। (I031ca, b/274314544)
Version 1.2.0-alpha14
৩ মে, ২০২৩
androidx.benchmark:benchmark-*:1.2.0-alpha14 রিলিজ করা হয়েছে। ভার্সন 1.2.0-alpha14-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
FrameTimingMetric-এ ফ্রেম আইডি সামঞ্জস্যপূর্ণ না হলে ফ্রেম উপেক্ষা করার সমস্যার সমাধান করুন। এর ফলে সাম্প্রতিক প্ল্যাটফর্ম ভার্সনে (API 31+) কিছু অ্যানিমেশনRenderThreadঅ্যানিমেট করার সময় (যেমন, রিপল চলাকালীন) অনেক ফ্রেম এড়িয়ে যাবে। (I747d2, b/279088460)- ৬৪ এমবির চেয়ে বড় ট্রেসের জন্য ফিক্সড ট্রেস প্রসেসর পার্সিং। (Ief831, b/269949822)
- Android U-তে বেসলাইন প্রোফাইল জেনারেশন সংক্রান্ত সমস্যার সমাধান করা হয়েছে,
pm dump-profilesকমান্ডের আলাদা আউটপুটের কারণে এটি কাজ করছিল না। (Id1392, b/277645214) - স্ট্রিং সঠিকভাবে তুলনা করার জন্য GPU ক্লক লকিং স্ক্রিপ্ট ঠিক করুন (I53e54, b/213935715)
Version 1.2.0-alpha13
৫ এপ্রিল, ২০২৩
androidx.benchmark:benchmark-*:1.2.0-alpha13 রিলিজ করা হয়েছে। ভার্সন 1.2.0-alpha13-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- আসন্ন স্টার্টআপ প্রোফাইল ফিচারকে (Ie20d7, b/275093123) সাপোর্ট করার জন্য বেসলাইন প্রোফাইল তৈরি করার সময় প্রোফাইল টাইপ প্যারামিটার যোগ করা হয়েছে
- Perfetto ট্রেসের কন্টেন্টের উপর ভিত্তি করে সম্পূর্ণ কাস্টম মেট্রিক সংজ্ঞায়িত করার জন্য নতুন পরীক্ষামূলক
TraceMetricAPI যোগ করা হয়েছে। (I4ce31, b/219851406) - বেঞ্চমার্কের সময় পেজ ফল্টের সংখ্যা নির্ধারণ করতে একটি এক্সপেরিমেন্টাল মেট্রিক যোগ করুন। (I48db0)
ভার্সন 1.2.0-alpha12
২২ মার্চ, ২০২৩
androidx.benchmark:benchmark-*:1.2.0-alpha12 রিলিজ করা হয়েছে। ভার্সন 1.2.0-alpha12-এ এইসব কমিট রয়েছে।
নতুন ফিচার
- নতুন বেসলাইন প্রোফাইল গ্র্যাডল প্লাগ-ইন আলফা ভার্সনে প্রকাশ করা হয়েছে, এর ফলে বেসলাইন প্রোফাইল তৈরি করা সহজ হয়েছে এবং ডেভেলপার ওয়ার্কফ্লো আরও সরল হয়েছে।
API-তে পরিবর্তন
- API ২১ ও ২২-এ Perfetto ট্রেসিং সাপোর্ট সরিয়ে দেওয়া হয়েছে, যার মধ্যে Microbenchmarks ও পরীক্ষামূলক
PerfettoTraceAPI, দুটিই অন্তর্ভুক্ত। এই ভার্সনের আগে, কিছু ডিভাইসেUiAutomationকানেকশন নির্ভরযোগ্য ছিল না। (I78e8c) - ট্রেস কন্টেন্ট পার্স করার সুবিধা চালু করতে
PerfettoTraceProcessor-এর জন্য সর্বজনীন পরীক্ষামূলক API যোগ করা হয়েছে। Perfetto ট্রেস ডেটার উপর ভিত্তি করে সম্পূর্ণ কাস্টম মেট্রিক তৈরি করার দিকে এটি একটি পদক্ষেপ। (I2659e, b/219851406)
ভার্সন 1.2.0-alpha11
৮ মার্চ, ২০২৩
androidx.benchmark:benchmark-*:1.2.0-alpha11 রিলিজ করা হয়েছে। 1.2.0-alpha11 ভার্সনে এইসব কমিট রয়েছে।
সমস্যার সমাধান
- একাধিক APK সহ অ্যাপ বান্ডেল থেকে প্রোফাইল আবার ইনস্টল বা এক্সট্র্যাক্ট করার সময়
MacrobenchmarkRuleএবংBaselineProfileRule-এ ক্র্যাশ হওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (I0d8c8, b/270587281)
ভার্সন 1.2.0-alpha10
২২ ফেব্রুয়ারি, ২০২৩
androidx.benchmark:benchmark-*:1.2.0-alpha10 রিলিজ করা হয়েছে। ভার্সন 1.2.0-alpha10-এ এইসব কমিট রয়েছে।
নতুন ফিচার
- Android 14+ ভার্সনে, কম্পাইলেশন স্টেট রিসেট করার জন্য Macrobenchmark আর টার্গেট অ্যাপ্লিকেশন আবার ইনস্টল করে না, নতুন প্ল্যাটফর্ম ফিচারের জন্য ধন্যবাদ। আগে, প্রতিটি বেঞ্চমার্ক রান করার আগে রুট করা ডিভাইস থাকা বা সমস্ত অ্যাপ্লিকেশন স্টেট (যেমন, ব্যবহারকারীর লগ-ইন) সরিয়ে দেওয়ার সাথে ডিল করা প্রয়োজন ছিল। (I9b08c, b/249143766)
সমস্যার সমাধান
- কম্পাইলেশন স্কিপ করার কারণে খালি প্রোফাইল নিয়ে আর ক্র্যাশ করবে না,
DryRunModeঠিক করা হয়েছে। পরিবর্তে, এটি একটি একক পুনরাবৃত্তি চালায় এবং কিছু ক্যাপচার করা হয়েছে তা নিশ্চিত করতে প্রোফাইলটি এক্সট্র্যাক্ট করে। (I2f05d, b/266403227) - পুরনো API লেভেলে powerstats-এর উপস্থিতি চেক করার সময়
PowerMetricক্র্যাশ করার সমস্যা সমাধান করা। (5faaf9, b/268253898)
ভার্সন 1.2.0-alpha09
১১ জানুয়ারি, ২০২৩
androidx.benchmark:benchmark-*:1.2.0-alpha09 রিলিজ করা হয়েছে। ভার্সন 1.2.0-alpha09-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- সব বেঞ্চমার্ক / বেসলাইন প্রোফাইল জেনারেশন বন্ধ করতে
Noneথেকেandroidx.benchmark.enabledRulesইন্সট্রুমেন্টেশন আর্গুমেন্ট পাস করার সুবিধা চালু করা হয়েছে। (I3d7fd, b/258671856) - অ্যাপ মডিউলে
PerfettoTraceক্যাপচার সংক্রান্ত সমস্যার সমাধান করুন (যেমন, সেল্ফ-ইনস্ট্রুমেন্টিং নয় এমন টেস্ট APK) (I12cfc) - Studio আউটপুটে বেসলাইন প্রোফাইল adb pull আর্গুমেন্টের ক্রম ফিক্স করা হয়েছে (I958d1, b/261781624)
- ম্যাক্রোবেঞ্চমার্ক চালানোর চেষ্টা করার সময় Arm এমুলেটর API 33 এখন সঠিকভাবে শনাক্ত করা হয়েছে এবং সঠিকভাবে সতর্কতা প্রিন্ট করবে। (69133b,b/262209591)
- Macrobenchmark-এ ব্যাটারি নেই এমন ডিভাইসে ব্যাটারি লেভেল চেক করা এড়িয়ে যান (fe4114, b/232448937)
ভার্সন 1.2.0-alpha08
৭ ডিসেম্বর, ২০২২
androidx.benchmark:benchmark-*:1.2.0-alpha08 রিলিজ করা হয়েছে। 1.2.0-alpha08 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- পরীক্ষার অংশ হিসেবে Perfetto ট্রেস (সিস্টেম ট্রেস নামেও পরিচিত) ক্যাপচার করার জন্য পরীক্ষামূলক নতুন API
PerfettoTrace.record {}এবংPerfettoTraceRuleযোগ করা হয়েছে, যাতে পরীক্ষার আচরণ এবং পারফর্ম্যান্স চেক করা যায়। (I3ba16) BaselineProfileRuleএখন প্যাকেজ প্রিফিক্সের তালিকার পরিবর্তে ফিল্টার প্রেডিকেট গ্রহণ করে। এটি টেস্টকে ফিল্টার করার সম্পূর্ণ কন্ট্রোল দেয়। (I93240)- একটি পরীক্ষামূলক API
BaselineProfileRule.collectStableBaselineProfileযোগ করুন যা N ইটারেশনের জন্য বেসলাইন প্রোফাইল স্থিতিশীল না হওয়া পর্যন্ত অপেক্ষা করে। (I923f3) BaselineProfileRuleব্যবহার করে বেসলাইন প্রোফাইল তৈরি করার সময় আউটপুট ফাইলের নামের আগে কিছু যোগ করার সুবিধা যোগ করা হয়েছে। (I7b59f, b/260318655)
সমস্যার সমাধান
- ফাইল আউটপুট লেখার নিরাপত্তা উন্নত করুন, যা আউটপুট ফাইলগুলিকে নিঃশব্দে লেখা / যোগ না করা থেকে আটকাতে হবে, বিশেষ করে API 21/22-এ। (If8c44, b/227510293)
- ফাইল সঠিকভাবে তৈরি ও প্লেস করতে
simpleperfট্রেস আউটপুট সংক্রান্ত সমস্যার সমাধান করুন। এর ফলে, Gradle-এর মাধ্যমে কোনও ফাইল পুল করা না গেলে, সেই সমস্যাও সাধারণভাবে সমাধান হয়ে যাবে। (I12a1c, b/259424099) - profileinstaller খুব পুরনো হলে, profileinstaller-এর ত্রুটি মেসেজ উন্নত করা হয়েছে। এটি এখন আপনাকে API 31 থেকে 33-এ বেসলাইন প্রোফাইল পরিমাপ করার জন্য profileinstaller ভার্সন (1.2.1) আপডেট করতে বলে, এটি কাজ করে না বলার পরিবর্তে। (Ia517f, b/253519888)
- Fix several shell command failures onerror message Print needed API <=23, including failed perfetto capture binary setup and trace capture failures (Ib6b87, b/258863685)
- সময়ের সাথে সাথে পরিবর্তন হওয়ার কারণে (সোর্স কন্ট্রোলে প্রোফাইল সংক্রান্ত নিয়ম চেক-ইন করার সময়) পরিবর্তনের সংখ্যা কমাতে, তৈরি করা প্রোফাইল সংক্রান্ত নিয়ম অটোমেটিক সাজান। (Ie2509)
- Android 13 (API 33)-এর আগের আনরুটেড বিল্ডে ক্র্যাশ হওয়ার সমস্যা সমাধান করা হয়েছে, সাথে
Expected no stderr from echo 3 > /proc/sys/vm/drop_cachesমেসেজ দেখানো হয়েছে (I6c245, b/259508183)
পরিচিত সমস্যা
- profileinstaller ম্যানিফেস্টে ব্রডকাস্ট রেজিস্ট্রি না থাকার কারণে MacrobenchmarkScope.dropShaderCache() ক্র্যাশ করতে পারে, যা এখনও রিলিজ করা হয়নি। (I5c728, b/258619948) profileinstaller:1.3.0-alpha02-এ সমস্যা সমাধান করতে, আপনার অ্যাপ্লিকেশনের (আপনার বেঞ্চমার্কের নয়) AndroidManifest.xml-এ নিম্নলিখিতগুলি যোগ করুন:
<!-- workaround bug in profileinstaller 1.3.0-alpha02, remove when updating to alpha03+ -->
<receiver
android:name="androidx.profileinstaller.ProfileInstallReceiver"
android:permission="android.permission.DUMP"
android:exported="true">
<intent-filter>
<action android:name="androidx.profileinstaller.action.BENCHMARK_OPERATION" />
</intent-filter>
</receiver>
ভার্সন 1.2.0-alpha07
৯ নভেম্বর, ২০২২
androidx.benchmark:benchmark-*:1.2.0-alpha07 রিলিজ করা হয়েছে। ভার্সন 1.2.0-alpha07-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- Macrobenchmarks-এ এনার্জি ও পাওয়ার পরিমাপ করার জন্য
PowerMetricAPI যোগ করে। (Ife601, b/220183779) MacrobenchmarkScope.dropShaderCache()-এ শেডার ক্যাশে ড্রপ করার সমস্যা সমাধান করা হয়েছে। এর ফলেStartupMode.COLDবেঞ্চমার্ক থেকে আনুমানিক ২০ মিলিসেকেন্ডের নয়েজ কমে যায়, কারণ এখন প্রতিটি ইটারেশনে শেডার ধারাবাহিকভাবে ক্লিয়ার করা হয়। আগে, ওয়ার্মআপ ইটারেশন ব্যবহার করেPartialকম্পাইলেশন ভুলভাবে দ্রুত নম্বর রিপোর্ট করত, কারণ ওয়ার্মআপের সময় শেডার ক্যাশিং হওয়ার সম্ভাবনা বেশি ছিল। এই সমস্যার সমাধান করতে, হয় রুট করা ডিভাইস প্রয়োজন, অথবা টার্গেট অ্যাপেprofileinstaller:1.3.0-alpha02ব্যবহার করতে হবে।ProfileInstallerলাইব্রেরির API পরিবর্তন সম্পর্কে জানতে, ProfileInstaller 1.30-alpha02 পৃষ্ঠা দেখুন। (Ia5171, b/231455742)TraceSectionMode("label", Mode.Sum)যোগ করা হয়েছে, এর ফলে একই লেবেল সহ একাধিক ট্রেস বিভাগে মোট সময় পরিমাপ করা যায়। যেমন,TraceSectionMetric("inflate", Mode.Sum)ম্যাক্রোবেঞ্চমার্কে ইনফ্লেশনের জন্য ব্যয় করা মোট সময়ের জন্যinflateMsমেট্রিক রিপোর্ট করবে। এছাড়াও, API 29-এর প্রয়োজনীয়তা সরিয়ে দেওয়া হয়েছে, কারণ টার্গেট অ্যাপের মধ্যেforceEnableAppTracingব্যবহার করে,TraceSectionMetric,androidx.tracing.Trace-এর সাথে একসাথে কাজ করে, API লেভেল কম করে। (Id7b68, b/231455742)
সমস্যার সমাধান
- সব আউটপুট/সমস্যা যাচাই করার মাধ্যমে সব ইন্টার্নাল শেল কমান্ডের নিরাপত্তা উন্নত করা হয়েছে। (I5984d, b/255402908, b/253094958)
- বেসলাইন প্রোফাইলে ডিভাইস নির্দিষ্ট করুন
adb pullকমান্ড, যাতে একাধিক ডিভাইস কানেক্ট করা থাকলে পুল কমান্ড সহজেই কপি করা যায় (সর্বাধিক একটি এমুলেটর) (I6ac6c, b/223359380) - ম্যাক্রোবেঞ্চমার্ক টেস্ট APK সেল্ফ-ইনস্ট্রুমেন্টিং হিসেবে সেট-আপ করা না থাকলে সমস্যা যোগ করুন। এই সমস্যার ফলে টার্গেট অ্যাপের প্রসেসের মধ্যে থেকে ম্যাক্রোবেঞ্চমার্কিং করা যায় না। প্রসেসে, macrobench অ্যাপ কম্পাইল/কিল/কোল্ড স্টার্ট করতে পারবে না বা নিজের অনুমতি নিয়ন্ত্রণ করতে পারবে না (I4279b)
measureRepeated()-এ একটি সমস্যার সমাধান করা হয়েছে যেখানেStartupMode.COLD,setupBlock-এর পরে টার্গেট প্রসেস বন্ধ করবে না। এখনsetupBlockঅ্যাপের সাথে ইন্টার্যাক্ট করলে অ্যাপ প্রসেস চালু থাকবে না এবং কোল্ড স্টার্ট সংক্রান্ত ভুল পরিমাপ করা হবে না। (I8ebb7)
Version 1.2.0-alpha06
২৪ অক্টোবর, ২০২২
androidx.benchmark:benchmark-*:1.2.0-alpha06 রিলিজ করা হয়েছে। ভার্সন 1.2.0-alpha06-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
BaselineProfileRule-এর জন্য Android 13 (API 33) বা এর পরের যেকোনও ভার্সনে আর রুট করার প্রয়োজন নেই এবং এটি আর এক্সপেরিমেন্টাল পর্যায়ে নেই। (Ie0a7d, b/250083467, b/253094958)- এই পরিবর্তনটি আনরুটেড ডিভাইসে ডিস্কে কোনও অ্যাপ থেকে প্রোফাইল কীভাবে ফ্লাশ করা হয় তাও ঠিক করে, তবে টার্গেট অ্যাপের profileinstaller ডিপেন্ডেন্সি আপডেট করতে হবে।
- রুট করা হয়নি এমন ডিভাইসে
BaselineProfileRuleবাCompilationMode.Partial(warmupIterations)ব্যবহার করতে,androidx.profileinstaller.profileinstaller:1.3.0-alpha01ব্যবহার করার জন্য আপনাকে অবশ্যই টার্গেট অ্যাপ আপডেট করতে হবে। এটি প্রোফাইলকে ডিস্কে সঠিকভাবে ফ্ল্যাশ করার সুবিধা দেয়, যাতে এটি কম্পাইল/এক্সট্র্যাক্ট করা যায়।
সমস্যার সমাধান
- API 33+-এ
SampledProfilingক্র্যাশ হওয়ার সমস্যা সমাধান করা হয়েছে। (I40743, b/236109374)
Version 1.2.0-alpha05
৫ অক্টোবর, ২০২২
androidx.benchmark:benchmark-*:1.2.0-alpha05 রিলিজ করা হয়েছে। ভার্সন 1.2.0-alpha05-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- বেঞ্চমার্ক ক্যাপচার করা ট্রেসের জন্য Studio সিস্টেম ট্রেস ভিউয়ারে ফ্রেম ব্রেকডাউন সংক্রান্ত সমস্যার সমাধান করা (I3f3ae, b/239677443)
- ২৯-এর পরিবর্তে API ৩১-এর প্রয়োজন হিসেবে
FrameOverrunতালিকাভুক্ত করতেFrameTimingMetricসংশোধন করুন (I716dd, b/220702554) BaselineProfileRule-এ ইটারেশন সেট করুন এবং টার্গেট প্যাকেজ ইনস্টল না করা থাকলে স্পষ্টভাবে থ্রো করুন (MacrobenchmarkRule-এর জন্য আগেই করা হয়েছে)। (Ic09a3, b/227991471)
ভার্সন 1.2.0-alpha04
২১ সেপ্টেম্বর, ২০২২
androidx.benchmark:benchmark-*:1.2.0-alpha04 রিলিজ করা হয়েছে। 1.2.0-alpha04 ভার্সনে এইসব কমিট রয়েছে।
নতুন ফিচার
আরও দ্রুত লোকাল ডেভেলপমেন্ট এবং অ্যাপ অটোমেশন (যেমন, প্রি-সাবমিটে) যাচাই করার জন্য ম্যাক্রোবেঞ্চমার্কে (মাইক্রোতে আগে থেকেই উপলভ্য)
dryRunMode.enableইন্সট্রুমেন্টেশন আর্গুমেন্টের জন্য সহায়তা যোগ করুন। এটি ইটারেশনকে ১-এ ওভাররাইড করে, কম্পাইলেশন এড়িয়ে যায়, সব কনফিগারেশন সংক্রান্ত সমস্যা দমন করে এবং পরিমাপের .json ফাইল আউটপুট বন্ধ করে দেয়। (Ib51b4, b/175149857)Gradle কমান্ড লাইনে:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.dryRunMode.enable=truebuild.gradle-এ:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.dryRunMode.enable', 'true' } }
সমস্যার সমাধান
StartupTimingMetric-এ পরিবর্তন করা হয়েছে যাতেMacrobenchmarkScope.startActivityAndWait()-এর মাধ্যমে পরিমাপ করা অ্যাক্টিভিটি লঞ্চ করার প্রয়োজন আর না হয়। এর অর্থ হল, মেট্রিকটি লঞ্চ করার তথ্য সংগ্রহ করতে পারে, যেমন বিজ্ঞপ্তি,Context.startActivity(), অ্যাপ-মধ্যস্থ অ্যাক্টিভিটি ভিত্তিক নেভিগেশন বা শেল কমান্ড। (Ia2de6, b/245414235)startActivityAndWait-এর ক্ষেত্রে ফ্রেম ডিটেকশনের কঠোরতা কমিয়ে এমুলেটরে লঞ্চ সম্পূর্ণ হওয়ার জন্য অপেক্ষা করার সময় টাইম-আউট হয়ে যাওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (Ibe2c6, b/244594339, b/228946895)
Version 1.2.0-alpha03
৭ সেপ্টেম্বর, ২০২২
androidx.benchmark:benchmark-*:1.2.0-alpha03 রিলিজ করা হয়েছে। ভার্সন 1.2.0-alpha03-এ এইসব কমিট রয়েছে।
নতুন ফিচার
BenchmarkRule/JUnit4থেকে আলাদা, স্বাধীনভাবেBenchmarkStateব্যবহার করার জন্য পরীক্ষামূলক API যোগ করা হয়েছে। (Id478f, b/228489614)
সমস্যার সমাধান
startActivityAndWait-এর জন্য Leanback ফলব্যাক যোগ করা হয়েছে। (01ed77, b/242899915)
ভার্সন 1.2.0-alpha02
২৪ আগস্ট, ২০২২
androidx.benchmark:benchmark-*:1.2.0-alpha02 রিলিজ করা হয়েছে। 1.2.0-alpha02 ভার্সনে এই কমিটগুলি রয়েছে।
API-তে পরিবর্তন
- বেসলাইন প্রোফাইল জেনারেশন ছাড়া, রুট করা হলেও
MacrobenchmarkScope.killProcess()-এর জন্য ডিফল্ট হিসেবেam force stopব্যবহার করা হয়। এটি একটি ঐচ্ছিক বুলিয়ান আর্গুমেন্ট দিয়ে ওভাররাইড করা যেতে পারে। (02cce9, b/241214097)
সমস্যার সমাধান
- সিস্টেম অ্যাপের জন্য বেসলাইন প্রোফাইল জেনারেশন কাজ করে। (I900b8, b/241214097)
- আনরুটেড ডিভাইসে ODPM পাওয়ার মেট্রিক্স চেক করার সুবিধা। (a38c78, b/229623230)
ভার্সন 1.2.0-alpha01
২৭ জুলাই, ২০২২
androidx.benchmark:benchmark-*:1.2.0-alpha01 রিলিজ করা হয়েছে। 1.2.0-alpha01 ভার্সনে এইসব কমিট রয়েছে।
নতুন ফিচার
- নতুন tracing-perfetto-common কম্পোনেন্ট, কোনও অ্যাপে Perfetto SDK ট্রেসিং চালু করার জন্য টুলিংকে অনুমতি দেয় যা এটি এক্সপোজ করে (I2cc7f)
শুধু বেঞ্চমার্ক বা শুধু বেসলাইন প্রোফাইল জেনারেশন ফিল্টার করার জন্য
androidx.benchmark.enabledRulesইনস্ট্রুমেন্টেশন আর্গুমেন্ট যোগ করা হয়েছে। শুধু এক ধরনের পরীক্ষা চালানোর জন্য 'Macrobenchmark' বা 'BaselineProfile' পাস করুন, যেমন, এমুলেটরে শুধুBaselineProfilesজেনারেট করার সময়। কমা দিয়ে আলাদা করা তালিকাও কাজ করে। (I756b7, b/230371561)যেমন, আপনার ম্যাক্রোবেঞ্চমার্কের build.gradle-এ:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }অথবা Gradle কমান্ড লাইন থেকে:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
API-তে পরিবর্তন
- বেঞ্চমার্কে এনার্জি ও পাওয়ার টাস্ক পরিমাপ করার জন্য নতুন
PowerMetricযোগ করা হয়েছে। (I9f39b, b/220183779) - প্রোফাইল রিসেট ও কম্পাইলেশন এড়িয়ে যেতে নতুন কম্পাইলেশন মোড
CompilationMode.Ignoreযোগ করা হয়েছে। (Ibbcf8, b/230453509) - প্যাকেজের নাম অনুযায়ী আউটপুট ফাইল ফিল্টার করতে
BaselineProfileRule#collectBaselineProfile-এ নতুন প্যারামিটার যোগ করা হয়েছে (If7338, b/220146561) - পাওয়ার ড্রেন পরিমাপ করার জন্য ডেভেলপারকে ডিভাইস ডিসচার্জ করার অনুমতি দেয়। (I6a6cb)
MacrobenchmarkScope-এ শেডার ক্যাশে মুছে দেওয়ার সুবিধা যোগ করা হয়েছে। (I32122)- ডেভেলপারকে মেট্রিক টাইপের ডিসপ্লে কনফিগার করতে এবং সাবসিস্টেমের বিভাগ বিস্তারিতভাবে দেখতে দেয়। (I810c9)
- আগে, কাজ করে না এমন ডিভাইসে রান করালে, বেঞ্চমার্কে একটি
UnsupportedOperationExceptionদেখানো হত। এখন, মেট্রিকটি কাজ করে না এমন ডিভাইসে (যেমন:PowerMetric.configure) ব্যবহার করা হলে তবেই UOE ঘটে। (I5cf20, b/227229375) - ম্যাক্রোবেঞ্চমার্কে প্রতিটি সিস্টেম ক্যাটেগরিতে মোট পাওয়ার ও এনার্জি পরিমাপ করার জন্য
TotalPowerMetricওTotalEnergyMetricযোগ করা হয়েছে। (I3b26b, b/224557371)
সমস্যার সমাধান
- আনরুটেড বিল্ডে প্রতিটি ম্যাক্রোবেঞ্চমার্কের মধ্যে কম্পাইল করা মেথড সঠিকভাবে রিসেট না হওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে। এর জন্য দুর্ভাগ্যবশত প্রতিটি ইটারেশনের জন্য apk আবার ইনস্টল করতে হবে, যা প্রতিটি ম্যাক্রোবেঞ্চমার্কের জন্য অ্যাপ্লিকেশন ডেটা মুছে দেবে। (I31c74, b/230665435)
- API 21/22-এ ট্রেস রেকর্ডিং ক্র্যাশ সংক্রান্ত সমস্যার সমাধান (If7fd6, b/227509388, b/227510293, b/227512788)
- স্টার্ট-আপ ম্যাক্রোবেঞ্চমার্কে 'কোনও মেট্রিক পড়তে পারছি না' ব্যতিক্রম সংক্রান্ত সমস্যা সমাধান করতে ওভারহল অ্যাক্টিভিটি লঞ্চ সম্পূর্ণ হওয়ার বিষয়টি শনাক্ত করা। (Ia517c)
ভার্সন 1.1.1
ভার্সন 1.1.1
৯ নভেম্বর, ২০২২
androidx.benchmark:benchmark-*:1.1.1 রিলিজ করা হয়েছে। 1.1.1 ভার্সনে এইসব কমিট রয়েছে।
সমস্যার সমাধান
- কিছু Android11 (API 30)+ ডিভাইসে হওয়া
android.system.ErrnoException: open failed: EACCESসংক্রান্ত সমস্যা সমাধান করা হয়েছে। এটি1.2.0-alpha01থেকে একটি ফিক্সের চেরি-পিক। (aosp/2072249)
ভার্সন 1.1.0
ভার্সন 1.1.0
১৫ জুন, ২০২২
androidx.benchmark:benchmark-*:1.1.0 রিলিজ করা হয়েছে। 1.1.0 ভার্সনে এইসব কমিট রয়েছে।
- এই ভার্সনটি
androidx.benchmark:benchmark-*:1.1.0-rc03-এর মতো।
1.0.0 ভার্সনের পর থেকে হওয়া গুরুত্বপূর্ণ পরিবর্তন
Jetpack Macrobenchmarks-এর জন্য সহায়তা, যা আপনাকে স্টার্ট-আপ ও স্ক্রল করার মতো সম্পূর্ণ অ্যাপ ইন্টার্যাকশন পরিমাপ করতে দেয়, ট্রেস ক্যাপচার করার ক্ষমতা ও ট্রেস বিভাগ পরিমাপ করার ক্ষমতা প্রদান করে।
বেসলাইন প্রোফাইলের জন্য সহায়তা
CompilationMode.Partial-এর মাধ্যমে বেসলাইন প্রোফাইলের কার্যকারিতা পরিমাপ করা।@BaselineProfileRuleযাতে কোনও নির্দিষ্ট ক্রিটিকাল ইউজার জার্নির জন্য বেসলাইন প্রোফাইল অটোমেটিক জেনারেট করা যায়।
Microbenchmark রান করার সময় অ্যালোকেশন মেট্রিক্স ও প্রোফাইলিং সংক্রান্ত সহায়তা।
Version 1.1.0-rc03
১ জুন, ২০২২
androidx.benchmark:benchmark-*:1.1.0-rc03 রিলিজ করা হয়েছে। Version 1.1.0-rc03-এ এইসব কমিট আছে।
সমস্যার সমাধান
প্রতিটি বেঞ্চমার্ক ইটারেশনে টার্গেট প্যাকেজ আবার ইনস্টল করা এড়িয়ে চলুন। ( aosp/২০৯৩০২৭, b/২৩১৯৭৬০৮৪)
pressHome()থেকে300msদেরি সরান। (aosp/2086030, b/231322975)আন্ডার-দ্য-হুড শেল কমান্ড অপ্টিমাইজ করে ম্যাক্রোবেঞ্চমার্ক ইটারেশন স্পিড উন্নত করুন। (aosp/2086023, b/231323582)
ম্যাক্রোবেঞ্চমার্কের মাধ্যমে বেসলাইন প্রোফাইল তৈরি করার সময় ম্যানেজ করা Gradle ডিভাইসের জন্য সহায়তা। (aosp/2062228, b/228926421)
ভার্সন 1.1.0-rc02
১১ মে, ২০২২
androidx.benchmark:benchmark-*:1.1.0-rc02 রিলিজ করা হয়েছে। ভার্সন 1.1.0-rc02-এ এইসব কমিট রয়েছে।
- মনে রাখবেন, এই রিলিজে আচরণের পরিবর্তন অন্তর্ভুক্ত আছে, কারণ সঠিক পরিমাপ নিশ্চিত করতে প্রতিটি বেঞ্চমার্কের মধ্যে অ্যাপ এখন সম্পূর্ণভাবে আবার ইনস্টল করা হয়।
সমস্যার সমাধান/আচরণে পরিবর্তন
অ্যাপ কম্পাইলেশন ম্যাক্রোবেঞ্চমার্কের মধ্যে সঠিকভাবে রিসেট না হওয়া এবং আনরুটেড বিল্ডে একেবারেই রিসেট না হওয়ার সমস্যা সমাধান করা হয়েছে। এর ফলে, একাধিক পরীক্ষা চালানোর ফলে
CompilationMode-এর পরিমাপের উপর সামান্য প্রভাব বা কোনও প্রভাব না পড়ার মতো অনেক সমস্যা সমাধান করা যায়। এই সমস্যার সমাধান করতে, টার্গেট অ্যাপ এখন প্রতিটি টেস্ট পদ্ধতি সম্পূর্ণভাবে আবার ইনস্টল করছে, যা প্রতিটি ম্যাক্রোবেঞ্চমার্কের মধ্যে অ্যাপ্লিকেশন ডেটা মুছে দেবে। (I31c74, b/230665435)যেহেতু এটি পরীক্ষার আগে অ্যাপগুলিকে স্টেট সেট আপ করতে বাধা দেয়, তাই এখন এই সমস্যা এড়ানোর জন্য কম্পাইলেশন / আবার ইনস্টল করা এড়িয়ে যাওয়া সম্ভব। যেমন, আপনি শেল কমান্ড
cmd package compile -f -m speed <package>-এর মাধ্যমে টার্গেট সম্পূর্ণ কম্পাইল করতে পারেন এবং তারপর ম্যাক্রোবেঞ্চমার্কের কম্পাইলেশন ধাপ বাইপাস করতে পারেন।যেমন, আপনার ম্যাক্রোবেঞ্চমার্কের build.gradle-এ:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.compilation.enabled, 'false' } }অথবা Gradle কমান্ড লাইন থেকে:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=falseandroidx.benchmark.enabledRulesইন্সট্রুমেন্টেশন আর্গুমেন্ট যোগ করে ম্যাক্রোবেঞ্চমার্ক এবং বেসলাইন প্রোফাইল জেনারেটিং টেস্টের মধ্যে একটি মডিউল শেয়ার করা সম্ভব হয়েছে। শুধুমাত্র এক ধরনের পরীক্ষা চালানোর জন্য 'Macrobenchmark' বা 'BaselineProfile' পাস করুন, যেমন, এমুলেটরেBaselineProfilesতৈরি করার সময়। (I756b7, b/230371561)যেমন, আপনার macrobenchmark-এর build.gradle-এ:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }অথবা Gradle কমান্ড লাইন থেকে:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
ভার্সন 1.1.0-rc01
২০ এপ্রিল, ২০২২
androidx.benchmark:benchmark-*:1.1.0-rc01 রিলিজ করা হয়েছে। ভার্সন 1.1.0-rc01-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- Android Studio-তে বেসলাইন প্রোফাইল আউটপুট লিঙ্কে এখন অনন্য ফাইলের নাম ব্যবহার করা হয়। এইভাবে, আউটপুট সবসময়
BaselineProfileRuleব্যবহার করার লেটেস্ট ফলাফলকে প্রতিফলিত করে। ( aosp/২০৫৭০০৮, b/২২৮২০৩০৮৬ )
Version 1.1.0-beta06
৬ এপ্রিল, ২০২২
androidx.benchmark:benchmark-*:1.1.0-beta06 রিলিজ করা হয়েছে। ভার্সন 1.1.0-beta06-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- API 21/22-এ ট্রেস রেকর্ডিং ক্র্যাশ সংক্রান্ত সমস্যার সমাধান করা হয়েছে (If7fd6, b/227509388)
- স্টার্ট-আপ ম্যাক্রোবেঞ্চমার্কে 'কোনও মেট্রিক পড়তে পারছি না' ব্যতিক্রম সংক্রান্ত সমস্যা সমাধান করতে ওভারহল অ্যাক্টিভিটি লঞ্চ সম্পূর্ণ হওয়ার বিষয়টি শনাক্ত করা। (Ia517c)
CompilationMode.None()ব্যবহার করা হলে, Macrobenchmarks-এর জন্য স্টার্ট-আপ মেট্রিক সংক্রান্ত সমস্যার সমাধান করুন। এই পরিবর্তনের আগে,CompilationMode.Partial()-এর স্পিডCompilation.None()-এর থেকে কম বলে মনে হত। (611ac9).
Version 1.1.0-beta05
২৩ মার্চ, ২০২২
androidx.benchmark:benchmark-*:1.1.0-beta05 রিলিজ করা হয়েছে। ভার্সন 1.1.0-beta05-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
CompilationMode.Noneব্যবহার করার সময় প্রোফাইল ইনস্টলেশন এড়িয়ে যাওয়ার পরে প্যাকেজ বন্ধ করুন। (aosp/1991373)StartupMode.COLDব্যবহার করার সময় Macrobenchmarks স্টার্ট-আপ মেট্রিক্স সংগ্রহ করতে না পারা সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (aosp/2012227 b/218668335)
Version 1.1.0-beta04
২৩ ফেব্রুয়ারি, ২০২২
androidx.benchmark:benchmark-*:1.1.0-beta04 রিলিজ করা হয়েছে। ভার্সন 1.1.0-beta04-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
Android 10-এ অনুপস্থিত মেট্রিক সংক্রান্ত সমস্যা সমাধান করা হয়েছে এবং
NoSuchElementExceptionট্রেসে প্রসেস নাম সঠিকভাবে ক্যাপচার না করার কারণে এই সমস্যা হয়েছে। (Ib4c17, b/218668335)Q (API 29) এবং তার পরবর্তী ভার্সনে থার্মাল থ্রটলিং শনাক্তকরণের জন্য
PowerManagerব্যবহার করুন। এর ফলে থার্মাল থ্রটলিং শনাক্তকরণে মিথ্যা পজিটিভের ফ্রিকোয়েন্সি উল্লেখযোগ্যভাবে কমে যায় (৯০ সেকেন্ড কুলডাউন পরে বেঞ্চমার্ক আবার চেষ্টা করা হয়) এবং ব্যবহারকারীর বিল্ডে বেঞ্চমার্ক উল্লেখযোগ্যভাবে দ্রুত হয়। এমনকি ঘড়ি লক করা থাকলেও এটি থ্রটল শনাক্তকরণ প্রদান করে (যদি সেগুলি ডিভাইসের ফিজিক্যাল এনভায়রনমেন্টের জন্য খুব বেশি লক করা থাকে)। (I9c027, b/217497678, b/131755853)পরিদর্শন সহজ করতে,
measureRepeatedথ্রেড শুধুমাত্র simpleperf স্যাম্পেল করা প্রোফাইলিং ফিল্টার করুন (Ic3e12, b/217501939)মাল্টি-প্রসেস অ্যাপে (Ice6c0, b/215988434) নামযুক্ত UI সাবপ্রসেস থেকে সহায়তা সংক্রান্ত মেট্রিক
Android 9 (SDK 28)-কে টার্গেট করতে বেসলাইন প্রোফাইল ফিল্টার করুন। aosp/1980331 b/216508418
Compilation.None()ব্যবহার করার সময় প্রোফাইল ইনস্টল করা এড়িয়ে যান। এছাড়াও, অ্যাপটিandroidx.profileinstallerএবং Android Gradle Plugin-এর পুরনো ভার্সন ব্যবহার করলে, সেই বিষয়ে সতর্কতা জানান। aosp/1977029
ভার্সন 1.1.0-beta03
৯ ফেব্রুয়ারি, ২০২২
androidx.benchmark:benchmark-*:1.1.0-beta03 রিলিজ করা হয়েছে। 1.1.0-beta03 ভার্সনে এইসব কমিট আছে।
API-তে পরিবর্তন
- অডিও আন্ডাররান (Ib5972) শনাক্ত করার অনুমতি দিতে পরীক্ষামূলক ফ্ল্যাগের অধীনে ম্যাক্রোবেঞ্চমার্ক লাইব্রেরিতে
AudioUnderrunMetricযোগ করা হয়েছে BaselineProfileRule-এ আরsetupব্লক গ্রহণ করা হয় না কারণ এটিprofileBlock-এর মতোই কাজ করে। (Ic7dfe, b/215536447)যেমন,
@Test fun collectBaselineProfile() { baselineRule.collectBaselineProfile( packageName = PACKAGE_NAME, setupBlock = { startActivityAndWait() }, profileBlock = { // ... } ) }@Test fun collectBaselineProfile() { baselineRule.collectBaselineProfile( packageName = PACKAGE_NAME, profileBlock = { startActivityAndWait() // ... } ) }
সমস্যার সমাধান
- Studio আউটপুটে লিঙ্ক করা থাকলে, পরবর্তী রানগুলিতে মাইক্রোবেঞ্চ প্রোফাইলার ট্রেস আপডেট করতে ব্যর্থ হওয়ার সমস্যা সমাধান করা হয়েছে (I5ae4d, b/214917025)
- API 23-এ কম্পাইলেশন শেল কমান্ড আটকানো (Ice380)
FrameCpuTime->FrameDurationCpu,FrameUiTime->FrameDurationUi-এর নাম পরিবর্তন করা হয়েছে যাতে এগুলি যে টাইমস্ট্যাম্প নয়, সময়সীমা তা স্পষ্ট করা যায় এবং প্রিফিক্সের সাথে ম্যাচ করানো যায়। (I0eba3, b/216337830)
ভার্সন 1.1.0-beta02
২৬ জানুয়ারি, ২০২২
androidx.benchmark:benchmark-*:1.1.0-beta02 রিলিজ করা হয়েছে। ভার্সন 1.1.0-beta02-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- মাইক্রোবেঞ্চমার্ক স্ট্যাক স্যাম্পেলিং / মেথড ট্রেসিং প্রোফাইল ফলাফল এখন Studio আউটপুটে লিঙ্ক করা আছে, অন্যান্য প্রোফাইলিং আউটপুটের মতো এবং অ্যালোকেশন মেট্রিককে দমন করে না। (Idcb65, b/214440748, b/214253245)
- BaselineProfileRule এখন logcat এবং Studio আউটপুটে জেনারেট করা BaselineProfile টেক্সট ফাইল পুল করার জন্য
adb pullকমান্ড প্রিন্ট করে। (f08811)
ভার্সন 1.1.0-beta01
১২ জানুয়ারি, ২০২২
androidx.benchmark:benchmark-*:1.1.0-beta01 রিলিজ করা হয়েছে। 1.1.0-beta01 ভার্সনে এইসব কমিট আছে।
সমস্যার সমাধান
- প্রোফাইলার আর্গুমেন্ট চালু করার বিষয়টি উপেক্ষা করা হলে তা ঠিক করে। (I37373, b/210619998)
- পুরনো হয়ে যাওয়া
CompliationModesসরানো হয়েছে (I98186, b/213467659) - স্বচ্ছতার জন্য
CompilationMode.Partial-এর বেসলাইন প্রোফাইল আর্গুমেন্টকে এনামে পরিবর্তন করা হয়েছে। (Id67ea)
Version 1.1.0-alpha13
১৫ ডিসেম্বর, ২০২১
androidx.benchmark:benchmark-*:1.1.0-alpha13 রিলিজ করা হয়েছে। ভার্সন 1.1.0-alpha13-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- Android Q (API 29+)-এ মাইক্রোবেঞ্চ আউটপুটে কম-ওভারহেড সিস্টেম ট্রেসিং যোগ করুন। মনে রাখবেন যে এটি বর্তমানে ফলাফল প্রভাবিত করা এড়াতে কাস্টম ট্রেসিং (
android.os.Traceবাandroidx.tracingJetpack API-এর মাধ্যমে) ক্যাপচার করে না। এই ট্রেসিং, বিশেষ করে বেঞ্চমার্কের বাইরের সোর্স থেকে অস্থিরতা নির্ণয় করার ক্ষেত্রে উপযোগী হতে পারে। (I298be, b/205636583, b/145598917) CompilationModes-কে তিনটি শ্রেণীতে ভাগ করুন - সম্পূর্ণ, কোনওটিই নয়, আংশিক। আগে, কম্পাইলেশন আর্গুমেন্ট (যা আমরা এখন ইমপ্লিমেন্টেশন বিবরণ হিসেবে বিবেচনা করি) এবং ফিচারের পরে এগুলির নাম অসামঞ্জস্যপূর্ণভাবে রাখা হয়েছিল। এর ফলে প্ল্যাটফর্মের বিভিন্ন ভার্সন জুড়ে ট্রেড-অফ, সম্ভাব্য কম্বিনেশন ও আচরণ আরও স্পষ্ট হয়ে ওঠে। (I3d7bf, b/207132597)- সেট-আপ ও পরিমাপ এখন সবসময় জোড়ায়, ক্রমানুসারে থাকে। আপনি এখন প্যাকেজের নাম এবং ইটারেশন কোয়েরি করতে পারবেন (যদিও নির্দিষ্ট ওয়ার্মআপ পরিস্থিতিতে ইটারেশন
nullহতে পারে)। (Id3b68, b/208357448, b/208369635)
সমস্যার সমাধান
- স্থায়ী
CompilationMode.Speedভুল করেNoneহিসেবে বিবেচিত হয়েছে (I01137)
ভার্সন 1.1.0-alpha12
১৭ নভেম্বর, ২০২১
androidx.benchmark:benchmark-*:1.1.0-alpha12 রিলিজ করা হয়েছে। ভার্সন 1.1.0-alpha12-এ এইসব কমিট রয়েছে।
নতুন ফিচার
- কাস্টম ট্রেস-ভিত্তিক টাইমিং পরিমাপের জন্য পরীক্ষামূলক TraceSectionMetric যোগ করুন। (I99db1, b/204572664)
সমস্যার সমাধান
- UI যাতে পরীক্ষা করা যায় তা নিশ্চিত করতে প্রতিটি ইটারেশনে ডিভাইসকে জাগিয়ে তুলুন - এর জন্য লকস্ক্রিন বন্ধ করতে হবে। (Ibfa28, b/180963442)
- এমুলেটর ও রুট না করা ডিভাইসে StackSampling প্রোফাইলিং মোডে একাধিক ক্র্যাশ সংক্রান্ত সমস্যার সমাধান করা হয়েছে (Icdbda, b/202719335)
- প্রতিটি ইটারেশনের শেষে ০.৫ সেকেন্ডের স্লিপ সরিয়ে দেওয়া হয়েছে - আপনি যদি এই পরিবর্তনের সাথে কোনও মেট্রিক মিসিং দেখতে পান, তাহলে একটি বাগ ফাইল করুন। (Iff6aa)
- ড্রপ করা ডেটার সম্ভাবনা কমানো এবং ট্রেসিং থেকে মেমরি ওভারহেড কমানো (Id2544, b/199324831, b/204448861)
- কমপ্যাক্ট শিডিউল স্টোরেজ ফর্ম্যাটে পরিবর্তন করে ট্রেস সাইজ ~৪০% কমান। (Id5fb6, b/199324831)
- স্টার্টআপ মেট্রিক্সের ইমপ্লিমেন্টেশন আপডেট করা হয়েছে যাতে এটি সবসময় রেন্ডারথ্রেডের শেষে শেষ হয়। এটি প্ল্যাটফর্মের বিভিন্ন ভার্সন জুড়ে আরও সামঞ্জস্যপূর্ণ হবে এবং অ্যাপ-মধ্যস্থ পরিমাপের সাথে আরও ঘনিষ্ঠভাবে ম্যাপ করবে। (Ic6b55)
Version 1.1.0-alpha11
৩ নভেম্বর, ২০২১
androidx.benchmark:benchmark-*:1.1.0-alpha11 রিলিজ করা হয়েছে। ভার্সন 1.1.0-alpha11-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- Macrobenchmark-এ এখন
23-এরminSdkVersionআছে। (If2655) - নতুন পরীক্ষামূলক
BaselineProfileRuleযোগ করে যা অ্যাপের ক্রিটিকাল ইউজার জার্নির জন্য বেসলাইন প্রোফাইল তৈরি করতে পারে। বিস্তারিত ডকুমেন্টেশন অনুসরণ করতে হবে। (Ibbefa, b/203692160) - java কলারের জন্য যোগ করা measureRepeated ইন্টারফেস ভ্যারিয়েন্ট সরিয়ে দেয়, কারণ এটি মেথড সম্পূর্ণ/সমাধান করার ক্ষেত্রে অস্পষ্টতা তৈরি করে। Java কলারদের আবার measureRepeated থেকে Unit.Instance রিটার্ন করতে হবে। এটি আপনার পক্ষে অসুবিধাজনক হলে, একটি বাগ ফাইল করুন, আমরা ভবিষ্যতের কোনও ভার্সনে এটি আবার চেক করে দেখতে পারি। (Ifb23e, b/204331495)
ভার্সন 1.1.0-alpha10
২৭ অক্টোবর, ২০২১
androidx.benchmark:benchmark-*:1.1.0-alpha10 রিলিজ করা হয়েছে। ভার্সন 1.1.0-alpha10-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- API 23-এ কাজ করার জন্য StartupTimingMetric ব্যাকপোর্ট করুন। এই নতুন প্রয়োগটি reportFullyDrawn()-কেও আরও ভালোভাবে ম্যানেজ করে যাতে সম্পর্কিত কন্টেন্ট রেন্ডার না হওয়া পর্যন্ত অপেক্ষা করা যায়। (If3ac9, b/183129298)
- Java কলারের জন্য একাধিক MacrobenchmarkScope পদ্ধতিতে JvmOverloads যোগ করা হয়েছে। (I644fe, b/184546459)
- বিকল্প MacrobenchmarkRule.measureRepeated ফাংশন প্রদান করে যা Java ভাষায় ইডিওমেটিক ব্যবহারের জন্য
Consumer<MacrobenchmarkScope>ব্যবহার করে। (If74ab, b/184546459)
সমস্যার সমাধান
- ট্রেস যথেষ্ট আগে শুরু না হওয়া এবং মেট্রিক ডেটা না থাকা সংক্রান্ত সমস্যার সমাধান। এর ফলে, লাইব্রেরির কারণে হওয়া "বেঞ্চমার্ক চলাকালীন কোনও মেট্রিক পড়া যাচ্ছে না" ব্যতিক্রম সংক্রান্ত সমস্যার সমাধান হয়ে যাবে বলে আশা করা যায়। (I6dfcb, b/193827052, b/200302931)
- FrameNegativeSlack-এর নাম পরিবর্তন করে FrameOverrun করা হয়েছে যাতে এর অর্থ আরও স্পষ্ট হয় - ফ্রেমটি তার টাইম বাজেটের থেকে কতটা বেশি সময় নিয়েছে। (I6c2aa, b/203008701)
Version 1.1.0-alpha09
১৩ অক্টোবর, ২০২১
androidx.benchmark:benchmark-*:1.1.0-alpha09 রিলিজ করা হয়েছে। ভার্সন 1.1.0-alpha09-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- API 31/S+ ভার্সনে রুট ছাড়াই কার্নেল পৃষ্ঠা ক্যাশে ড্রপ করার সুবিধা, যা StartupMode.COLD লঞ্চের নির্ভুলতা বাড়াবে। (Iecfdb, b/200160030)
ভার্সন 1.1.0-alpha08
২৯ সেপ্টেম্বর, ২০২১
androidx.benchmark:benchmark-*:1.1.0-alpha08 রিলিজ করা হয়েছে। ভার্সন 1.1.0-alpha08-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- API 23-এ ফিরে যাওয়ার জন্য স্ক্রল করার ম্যাক্রোবেঞ্চমার্ক চালু করুন (If39c2, b/183129298)
- UI ও JSON আউটপুটে নতুন ধরনের স্যাম্পেল করা মেট্রিক যোগ করুন, যা প্রতিটি ইটারেশন পিছু একাধিক স্যাম্পেলের পার্সেন্টাইলকে ফোকাস করে। (I56247, b/199940612)
- বেঞ্চমার্ক লাইব্রেরি জুড়ে ফ্লোটিং পয়েন্ট মেট্রিক্সে পরিবর্তন করুন (Studio UI-তে ট্রাঙ্কেট করা হয়েছে)। (I69249, b/197008210)
ভার্সন 1.1.0-alpha07
১ সেপ্টেম্বর, ২০২১
androidx.benchmark:benchmark-*:1.1.0-alpha07 রিলিজ করা হয়েছে। ভার্সন 1.1.0-alpha07-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- ভবিষ্যতে কাজ করবে এমন সর্বনিম্ন API লেভেল দেখানোর জন্য ন্যূনতম API লেভেল বাড়িয়ে ২১ করা হয়েছে। বর্তমানে ন্যূনতম API সাপোর্ট RequiredApi() এর মাধ্যমে জানানো হচ্ছে এবং বর্তমানে এটি ২৯ (I440d6, b/183129298)
সমস্যার সমাধান
ProfileInstallerঠিক করা হয়েছে যাতে বেসলাইন প্রোফাইল ব্যবহার করা অ্যাপগুলিCompilationMode.BaselineProfileব্যবহার করে আরও সহজে MacroBenchmarks রান করতে পারে। (I42657, b/196074999) মনে রাখবেন:androidx.profileinstaller:profileinstaller:1.1.0-alpha04বা তার পরবর্তী ভার্সনেও আপডেট করতে হবে।StartupMode.COLD+CompilationMode.Noneবেঞ্চমার্ক এখন আরও স্থিতিশীল। (I770cd, b/196074999)
Version 1.1.0-alpha06
১৮ আগস্ট, ২০২১
androidx.benchmark:benchmark-*:1.1.0-alpha06 রিলিজ করা হয়েছে। ভার্সন 1.1.0-alpha06-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- লোকাল লেভেলে টেস্টিং/প্রোফাইলিং করার সময় ইটারেশন সংখ্যা ম্যানুয়ালি ওভাররাইড করার অনুমতি দিতে
androidx.benchmark.iterationsইনস্ট্রুমেন্টেশন আর্গুমেন্ট যোগ করা হয়েছে। (6188be, b/194137879)
সমস্যার সমাধান
- API 29+ ভার্সনে ডিফল্ট স্যাম্পেলিং প্রোফাইলার হিসেবে Simpleperf-এ পরিবর্তন করা হয়েছে। (Ic4b34, b/158303822)
পরিচিত সমস্যা
CompilationMode.BaselineProfileএখনও ডেভেলপ করা হচ্ছে। আপাতত কোনও প্রোফাইল কতটা ভালো তা নির্ধারণ করতে এটি ব্যবহার করা এড়িয়ে চলুন।
ভার্সন 1.1.0-alpha05
অগাস্ট ৪, ২০২১
androidx.benchmark:benchmark-*:1.1.0-alpha05 রিলিজ করা হয়েছে। ভার্সন 1.1.0-alpha05-এ এইসব কমিট রয়েছে।
1.1.0-alpha04 রিলিজ করার আগে বিক্ষিপ্ত ক্র্যাশের কারণে বাতিল করা হয়েছে। b/193827052
API-তে পরিবর্তন
am start-এর মাধ্যমে লঞ্চ করার জন্য startActivityAndWait পরিবর্তন করা হয়েছে, এর ফলে প্রতিটি পরিমাপের ইটারেশনের সময় প্রায় ৫ সেকেন্ড কমে গেছে, তবে এর জন্য ইনটেন্ট পার্সেলযোগ্য আর কাজ করে না। (I5a6f5, b/192009149
সমস্যার সমাধান
- থার্মাল থ্রটল শনাক্তকরণের আগ্রাসী মনোভাব কমান এবং ঘন ঘন থ্রটল শনাক্ত করা হলে বেসলাইন পুনরায় গণনা করুন। (I7327b)
- Android S বিটা ভার্সনে কাজ করার জন্য FrameTimingMetric সংক্রান্ত সমস্যার সমাধান করা হয়েছে (Ib60cc, b/193260119)
CompilationMode.BaselineProfile-কে আরও ভালোভাবে সহায়তা করতে, জোর করে বন্ধ করা অবস্থা থেকে টার্গেট অ্যাপকে বের করে আনতেEmptyActivityব্যবহার করুন। (Id7cac, b/192084204)- প্ল্যাটফর্ম স্ট্যান্ডার্ডের সাথে ম্যাচ করার জন্য ট্রেস ফাইল এক্সটেনশন পরিবর্তন করে
.perfetto-traceকরা হয়েছে। (I4c236, b/174663039) - আপনার অ্যাপ্লিকেশন রেন্ডার করা সম্পূর্ণ না হওয়া পর্যন্ত সময় পরিমাপ করতে StartupTimingMetric এখন "fullyDrawnMs" মেট্রিক আউটপুট করে। আপনার অ্যাপের জন্য এই মেট্রিককে সংজ্ঞায়িত করতে, আপনার প্রাথমিক কন্টেন্ট রেডি হয়ে গেলে, Activity.reportFullyDrawn কল করুন। যেমন, আপনার প্রাথমিক তালিকা আইটেম DB বা নেটওয়ার্ক থেকে লোড করা হলে। (ComponentActivity-তে বিল্ড ভার্সন চেক না করেই reportFullyDrawn পদ্ধতি উপলভ্য)। মনে রাখবেন যে মেট্রিক ক্যাপচার করার জন্য আপনার টেস্ট যথেষ্ট সময় ধরে চালাতে হবে (startActivityAndWait, reportFullyDrawn-এর জন্য অপেক্ষা করে না)। (If1141, b/179176560)
- ট্রেসে UI মেটাডেটা অ্যাপেন্ড করার খরচ ৫০+ মিলি সেকেন্ড কমানো হয়েছে (Ic8390, b/193923003)
- ট্রেসিং বন্ধ করার সময় পোলিং ফ্রিকোয়েন্সি উল্লেখযোগ্যভাবে বাড়ানো হয়েছে, যা স্টার্টআপ বেঞ্চমার্ক রানটাইম ৩০+% (Idfbc1, b/193723768) কমাতে পারে
Version 1.1.0-alpha03
১৬ জুন, ২০২১
androidx.benchmark:benchmark-*:1.1.0-alpha03 রিলিজ করা হয়েছে। ভার্সন 1.1.0-alpha03-এ এইসব কমিট রয়েছে।
নতুন ফিচার
- Jetpack ProfileInstaller লাইব্রেরি ব্যবহার করে ইনস্টল করা প্রোফাইলকে সাপোর্ট করার জন্য নতুন
CompilationMode.BaselineProfileযোগ করা হয়েছে। (aosp/1720930)
সমস্যার সমাধান
বেঞ্চমার্ক সংক্রান্ত সমস্যা আড়াল করার জন্য স্যাম্পেল Gradle কোড আপডেট করা হয়েছে যাতে এমন একটি API ব্যবহার করা যায় যা আর ব্যবহার করা হয় না এবং এমন সিনট্যাক্স ব্যবহার করা যায় যা .gradle.kts ব্যবহারকারীদের জন্যও কাজ করে।
যেমন,
testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR,LOW-BATTERY"
ভার্সন 1.1.0-alpha02
১৮ মে, ২০২১
বেঞ্চমার্ক ভার্সন 1.1.0-alpha02 বেঞ্চমার্কিংয়ে একটি বড় কম্পোনেন্ট নিয়ে আসে - Macrobenchmark। benchmark-এর মাধ্যমে আপনি CPU লুপ পরিমাপ করতে পারেন এবং এর পাশাপাশি macrobenchmark-এর মাধ্যমে আপনি স্টার্ট-আপ ও স্ক্রল করার মতো সম্পূর্ণ অ্যাপ ইন্টার্যাকশন পরিমাপ করতে এবং ট্রেস ক্যাপচার করতে পারেন। আরও তথ্যের জন্য লাইব্রেরি ডকুমেন্টেশন দেখুন।
androidx.benchmark:benchmark-*:1.1.0-alpha02 রিলিজ করা হয়েছে। ভার্সন 1.1.0-alpha02-এ এইসব কমিট রয়েছে।
নতুন ফিচার
Macrobenchmark আর্টিফ্যাক্ট যোগ করা হয়েছে (androidx.benchmark:benchmark-macro-junit4 এবং androidx.benchmark:benchmark-macro)
- আপনার অ্যাপ থেকে, লোকালি বা CI-তে স্টার্টআপ, স্ক্রলিং/অ্যানিমেশন পারফর্ম্যান্স মেট্রিক ক্যাপচার করুন
- Android Studio-র মধ্যে থেকে ট্রেস ক্যাপচার ও পরীক্ষা করা
সমস্যার সমাধান
- Android 12-এ আউটপুট ডিরেক্টরি সহ শেল সংক্রান্ত অনুমতির সমস্যা সমাধান করুন (মনে রাখবেন - প্রভাবিত ডিভাইসে আউটপুট ফাইল ক্যাপচার করা চালিয়ে যেতে Android Gradle প্লাগইন 7.0.0 ক্যানারি এবং Android Studio-কে Arctic Fox (2020.3.1)-এ আপডেট করতে হতে পারে)। (Icb039)
- BenchmarkPlugin-এ কনফিগারেশন ক্যাশিং সংক্রান্ত সহায়তা (6be1c1, b/159804788)
- সরলীকৃত ফাইল আউটপুট - ডিফল্ট হিসেবে চালু, এমন একটি ডিরেক্টরিতে যার জন্য
requestLegacyExternalStorage=true(8b5a4d, b/172376362) প্রয়োজন নেই - যেসব প্ল্যাটফর্ম ভার্সনে JIT থ্রেড নেই সেখানে সেটি খুঁজে না পাওয়ার ব্যাপারে লাইব্রেরি প্রিন্টিং logcat সংক্রান্ত সতর্কতা ঠিক করে। (I9cc63, b/161847393)
- পড়ার ডিভাইসের সর্বাধিক ফ্রিকোয়েন্সির জন্য সমাধান। (I55c7a)
ভার্সন 1.1.0-alpha01
১০ জুন, ২০২০
androidx.benchmark:benchmark-common:1.1.0-alpha01, androidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01 ও androidx.benchmark:benchmark-junit4:1.1.0-alpha01 রিলিজ করা হয়েছে। 1.1.0-alpha01 ভার্সনে এইসব কমিট রয়েছে।
1.1-এর নতুন ফিচার
- অ্যালোকেশন মেট্রিক - বেঞ্চমার্ক এখন ওয়ার্মআপ এবং টাইমিংয়ের পরে একটি অতিরিক্ত ফেজ চালায়, অ্যালোকেশন কাউন্ট ক্যাপচার করে। অ্যালোকেশন প্ল্যাটফর্মের পুরনো ভার্সনে পারফর্ম্যান্স সংক্রান্ত সমস্যা সৃষ্টি করতে পারে (O-তে ১৪০ ন্যানোসেকেন্ড, M-এ ৮ ন্যানোসেকেন্ড হয়ে যায় - Nexus5X-এ লক করা ক্লক সহ পরিমাপ করা হয়েছে)। এই মেট্রিক Android Studio কনসোল আউটপুটে এবং
- প্রোফাইলিং সংক্রান্ত সহায়তা - আপনার কোড কেন ধীরে রান করছে তা খতিয়ে দেখতে, আপনি এখন বেঞ্চমার্ক রানের জন্য প্রোফাইলিং ডেটা ক্যাপচার করতে পারবেন। বেঞ্চমার্ক, ART থেকে মেথড ট্রেসিং বা মেথড স্যাম্পলিং ক্যাপচার করতে সাহায্য করে। ফাইল > খুলুন বিকল্প ব্যবহার করে Android Studio-র মধ্যে Profiler-এর সাহায্যে এইসব ফাইল পরীক্ষা করা যেতে পারে।
- Benchmark Gradle প্লাগ-ইন এখন আরও সহজ সেট-আপের জন্য ডিফল্ট প্রদান করে:
testBuildTypeডিফল্ট হিসেবে রিলিজ করার জন্য সেট করা হয়েছে, যাতে বিল্ট-ইন কোড কভারেজের সাথে ডিপেন্ডেন্সি ব্যবহার করা এড়ানো যায়। রিলিজ buildType-ও ডিফল্ট buildType হিসেবে কনফিগার করা হয়, যা Android Studio-কে প্রথমবার কোনও প্রোজেক্ট খোলার সময় অটোমেটিক সঠিক বিল্ড ভেরিয়েন্ট বেছে নিতে দেয়। (b/138808399)signingConfig.debugডিফল্ট সাইনিং কনফিগারেশন হিসেবে ব্যবহার করা হয় (b/153583269)
** সমস্যার সমাধান **
- ওয়ার্মআপ ট্রানজিশন ওভারহেড উল্লেখযোগ্যভাবে কমানো হয়েছে, যেখানে প্রতিটি বেঞ্চমার্কের জন্য প্রথম পরিমাপ কৃত্রিমভাবে অন্যদের চেয়ে বেশি ছিল। খুব ছোট বেঞ্চমার্কের (১ মাইক্রোসেকেন্ড বা তার কম) ক্ষেত্রে এই সমস্যাটি আরও বেশি করে দেখা গেছে। (b/142058671)
- কমান্ড লাইন থেকে রান করার সময় প্রতিটি বেঞ্চমার্কের জন্য প্রিন্ট করা
InstrumentationResultParserসমস্যা সমাধান করা হয়েছে। (I64988, b/154248456)
পরিচিত সমস্যা
- কমান্ড লাইন, Benchmark-এর গ্র্যাডল ইনভোকেশন সরাসরি ফলাফল প্রিন্ট করে না। আপনি Studio-র মাধ্যমে রান করিয়ে অথবা ফলাফলের জন্য JSON আউটপুট ফাইল পার্স করে এই সমস্যার সমাধান করতে পারেন।
- বেঞ্চমার্ক রিপোর্টিং সেইসব ডিভাইস থেকে রিপোর্ট পুল করতে পারে না যেগুলিতে এমন অ্যাপ ইনস্টল করা আছে যার applicationId-এর শেষে “android” বা “download” (কেস ইনসেনসিটিভ) আছে। এই সমস্যার সম্মুখীন হওয়া ব্যবহারকারীদের Android Gradle প্লাগ-ইন 4.2-alpha01 বা তার পরবর্তী ভার্সনে আপগ্রেড করতে হবে।
ভার্সন 1.0.0
বেঞ্চমার্ক ভার্সন ১.০.০
২০ নভেম্বর, ২০১৯
1.0.0-rc01 থেকে কোনও পরিবর্তন না করেই androidx.benchmark:benchmark-common:1.0.0, androidx.benchmark:benchmark-gradle-plugin:1.0.0 ও androidx.benchmark:benchmark-junit4:1.0.0 রিলিজ করা হয়েছে। ভার্সন 1.0.0-এ এইসব কমিট রয়েছে।
1.0.0 ভার্সনের প্রধান ফিচার
বেঞ্চমার্ক লাইব্রেরি আপনাকে অ্যাপ কোডের পারফর্ম্যান্স বেঞ্চমার্ক লিখতে এবং দ্রুত ফলাফল পেতে সাহায্য করে।
এটি বিল্ড ও রানটাইম কনফিগারেশন সংক্রান্ত সমস্যা প্রতিরোধ করে এবং ডিভাইস পারফর্ম্যান্স স্থিতিশীল করে যাতে পরিমাপ সঠিক ও সামঞ্জস্যপূর্ণ হয়। সময়ের সাথে সাথে কোডের পারফর্ম্যান্স লক্ষ্য করতে এবং রিগ্রেশন প্রতিরোধ করতে, সরাসরি Android Studio-তে অথবা Continuous Integration-এ বেঞ্চমার্ক রান করুন।
প্রধান ফিচারের মধ্যে এগুলি রয়েছে:
- ক্লক স্টেবিলাইজেশন
- অটোমেটিক থ্রেড অগ্রাধিকার
- UI পারফর্ম্যান্স টেস্টিংয়ের জন্য সহায়তা, যেমন RecyclerView স্যাম্পেল-এ
- JIT-সচেতন ওয়ার্ম-আপ ও লুপিং
- পোস্ট-প্রসেসিংয়ের জন্য JSON বেঞ্চমার্ক আউটপুট
ভার্সন 1.0.0-rc01
২৩ অক্টোবর, ২০১৯
androidx.benchmark:benchmark-common:1.0.0-rc01, androidx.benchmark:benchmark-gradle-plugin:1.0.0-rc01 ও androidx.benchmark:benchmark-junit4:1.0.0-rc01 রিলিজ করা হয়েছে। ভার্সন 1.0.0-rc01-এ এইসব কমিট রয়েছে।
নতুন ফিচার
- বেঞ্চমার্কে systrace ট্রেসিং যোগ করা হয়েছে
সমস্যার সমাধান
- মেট্রিক অস্থিরতার সমস্যা সমাধান করা হয়েছে যেখানে JIT ওয়ার্ম আপের আগে শেষ হবে না কারণ ডিপ্রায়োরাইটাইজেশন (b/140773023)
- Android Gradle Plugin 3.5 এবং 3.6 জুড়ে ইউনিফায়েড JSON আউটপুট ডিরেক্টরি
ভার্সন 1.0.0-beta01
৯ অক্টোবর, ২০১৯
androidx.benchmark:benchmark-common:1.0.0-beta01, androidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01 ও androidx.benchmark:benchmark-junit4:1.0.0-beta01 রিলিজ করা হয়েছে। 1.0.0-beta01 ভার্সনে এইসব কমিট আছে।
নতুন ফিচার
- এক বেঞ্চমার্ক থেকে পরের বেঞ্চমার্কে মেমরি লিকেজ কমানোর জন্য প্রতিটি ওয়ার্ম-আপের আগে গার্বেজ কালেকশন রান করান (b/140895105)
সমস্যার সমাধান
androidx.annotation:android-experimental-lintডিপেন্ডেন্সি যোগ করা হয়েছে, যাতে পরীক্ষামূলক API ব্যবহার না করা হলে Java কোড সঠিকভাবে লিন্ট সংক্রান্ত সমস্যা তৈরি করে, যা Kotlin কলারদের জন্য Kotlin পরীক্ষামূলক অ্যানোটেশন দ্বারা প্রদান করা হয়।- AGP কখন ডেটা কপি হ্যান্ডেল করবে তা জানতে, Android Gradle Plugin 3.6-এ আউটপুটের জন্য
additionalTestOutputDirইনস্ট্রুমেন্টেশন আর্গুমেন্টের ব্যবহার এখন সঠিকভাবে শনাক্ত করে। -1(b/141945670) সঠিকভাবে প্রিন্ট করার জন্য JSON-এ শনাক্ত না হওয়া ক্লক ফ্রিকোয়েন্সি সংক্রান্ত সমস্যার সমাধান করুন।
ভার্সন 1.0.0-alpha06
১৮ সেপ্টেম্বর, ২০১৯
androidx.benchmark:benchmark-common:1.0.0-alpha06, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha06 ও androidx.benchmark:benchmark-junit4:1.0.0-alpha06 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha06-এ এইসব কমিট রয়েছে।
নতুন ফিচার
- টেস্ট রানারের জন্য পুরনো প্যাকেজ ভুলভাবে ব্যবহার করার জন্য একটি চেক যোগ করা হয়েছে, যা এখন আরও সহায়ক ত্রুটি মেসেজ প্রদান করে
API সংক্রান্ত পরিবর্তন
- পরীক্ষামূলক অ্যানোটেশন
ExperimentalAnnotationReportএখন সঠিকভাবে সর্বজনীন করা হয়েছে। পরীক্ষামূলক BenchmarkState#report API ব্যবহার করার জন্য এখন এই অ্যানোটেশন প্রয়োজন
Version 1.0.0-alpha05
৫ সেপ্টেম্বর, ২০১৯
androidx.benchmark:benchmark-common:1.0.0-alpha05, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha05 ও androidx.benchmark:benchmark-junit4:1.0.0-alpha05 রিলিজ করা হয়েছে। এই ভার্সনে অন্তর্ভুক্ত কমিটগুলি এখানে পাওয়া যাবে।
API-তে পরিবর্তন
BenchmarkState.reportDataAPI এখন পরীক্ষামূলক হিসেবে চিহ্নিত করা হয়েছে
সমস্যার সমাধান
- ক্লক-লকিং স্ক্রিপ্টের জন্য সমাধান, যা
cutবাexprশেল ইউটিলিটি না থাকা ডিভাইসে কাজ করবে না। ./gradlew lockClocksটাস্কের সাথে সম্পর্কিত সমস্যার সমাধান করা হয়েছে। এই সমস্যাটি সেইসব ডিভাইসে দেখা যেত যেগুলি su ইউটিলিটির পুরনো ভার্সন দিয়ে রুট করা হয়েছিল এবং যেগুলি-cফ্ল্যাগ সাপোর্ট করত না।
Version 1.0.0-alpha04
৭ আগস্ট, ২০১৯
androidx.benchmark:benchmark-common:1.0.0-alpha04, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha04 ও androidx.benchmark:benchmark-junit4:1.0.0-alpha04 রিলিজ করা হয়েছে। এই ভার্সনে অন্তর্ভুক্ত কমিট এখানে পাওয়া যাবে।
Gradle ছাড়া কীভাবে Benchmark লাইব্রেরি ব্যবহার করতে হয় সেই সম্পর্কে নতুন ডকুমেন্টেশন যোগ করা হয়েছে। এটি বিভিন্ন বিল্ড সিস্টেমের (যেমন Bazel বা Buck) সাথে ব্যবহার করা এবং CI-তে রান করার সময়, উভয় ক্ষেত্রেই প্রযোজ্য। আরও তথ্যের জন্য, Gradle ছাড়া বেঞ্চমার্ক তৈরি করুন এবং কন্টিনিউয়াস ইন্টিগ্রেশনে বেঞ্চমার্ক রান করুন দেখুন।
নতুন ফিচার
- Gradle প্লাগ-ইন
- এখন অটোমেটিক টেস্ট কভারেজ বন্ধ করে দেয় এবং ডিফল্ট হিসেবে
AndroidBenchmarkRunnerসেট করে (b/138374050) - বেঞ্চমার্ক রান করার সময় এবং AGP 3.6+ ব্যবহার করার সময়, নতুন AGP-ভিত্তিক ডেটা কপির জন্য সহায়তা যোগ করা হয়েছে
- এখন অটোমেটিক টেস্ট কভারেজ বন্ধ করে দেয় এবং ডিফল্ট হিসেবে
- JSON ফর্ম্যাট যোগ করা হয়েছে
- আউটপুট মোট বেঞ্চমার্ক টেস্ট রান টাইম (b/133147694)
@Parameterizedনাম স্ট্রিং (যেমন@Parameters(name = "size={0},depth={1}")) ব্যবহার করে এমন বেঞ্চমার্ক এখন JSON আউটপুটে (b/132578772) বেঞ্চমার্ক পিছু প্যারামিটারের নাম ও ভ্যালু আউটপুট করে
- ড্রাই রান মোড (b/138785848)
- প্রতিটি বেঞ্চমার্ক লুপ শুধুমাত্র একবার চালানোর জন্য "ড্রাই রান" মোড যোগ করা হয়েছে, যাতে পরিমাপ ক্যাপচার না করেই ত্রুটি/ক্র্যাশ চেক করা যায়। এটি কাজে লাগতে পারে, যেমন, প্রিসাবমিটে দ্রুত বেঞ্চমার্ক রান করে চেক করা যে সেগুলি ভেঙে যায়নি।
API-তে পরিবর্তন
- মডিউল স্ট্রাকচার পরিবর্তন করা হয়েছে, লাইব্রেরি স্প্লিট করা হয়েছে (b/138451391)
benchmark:benchmark-junit4-এ JUnit ডিপেন্ডেন্সি সহ ক্লাস আছে:AndroidBenchmarkRunnerএবংBenchmarkRule, দুটিইandroidx.benchmark.junit4প্যাকেজে সরানো হয়েছে- BenchmarkState API সহ বাকি লজিক
benchmark:benchmark-common-এ আছে - এই স্প্লিট, ভবিষ্যতে JUnit4 API ছাড়াই লাইব্রেরিকে বেঞ্চমার্কিংয়ে সহায়তা করার অনুমতি দেবে
- কনফিগারেশন সংক্রান্ত সতর্কতা এখন সমস্যা হিসেবে বিবেচনা করা হয় এবং এর ফলে টেস্ট ক্র্যাশ করবে (b/137653596)
- এটি করা হয় যাতে আরও সঠিক পরিমাপ করা যায়, বিশেষ করে CI-তে
- ইনস্ট্রুমেন্টেশন আর্গুমেন্টের মাধ্যমে এই ত্রুটিগুলি কমিয়ে আবার সতর্কতায় পরিণত করা যেতে পারে। উদাহরণস্বরূপ:
-e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"
সমস্যার সমাধান
- Q ডিভাইসে এক্সটার্নাল স্টোরেজে লেখার সময় সমস্যা হলে, কীভাবে সমস্যার সমাধান করা যায় সেই সংক্রান্ত পরামর্শ সহ আরও বিস্তারিত মেসেজ দেখানো হয়
- স্ক্রিন বন্ধ থাকলে ব্যর্থ হওয়ার পরিবর্তে, বেঞ্চমার্ক রান চলাকালীন স্ক্রিন অটোমেটিক চালু হয়ে যায়
এক্সটার্নাল কন্ট্রিবিউশন
- JSON আউটপুট উন্নত করা এবং স্ক্রিন বন্ধ হয়ে যাওয়া সংক্রান্ত সমস্যার সমাধান করার জন্য সের্গেই জাকারভকে ধন্যবাদ!
ভার্সন 1.0.0-alpha03
২ জুলাই, ২০১৯
androidx.benchmark:benchmark:1.0.0-alpha03 ও androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03 রিলিজ করা হয়েছে। এই ভার্সনে অন্তর্ভুক্ত কমিট এখানে পাওয়া যাবে।
নতুন ফিচার
- সম্পূর্ণ JSON রিপোর্টে বেঞ্চমার্ক অনুযায়ী থার্মাল থ্রটলিংয়ের কারণে স্লিপ ডিউরেশন এক্সপোজ করা
সমস্যার সমাধান
- Android প্লাগ-ইন এবং Android ব্লকের পরে Gradle প্লাগ-ইন আর প্রয়োগ করার প্রয়োজন নেই
- স্কোপড স্টোরেজ ব্যবহার করে Android 10 ডিভাইসে বেঞ্চমার্ক রিপোর্টের জন্য সহায়তা যোগ করে
Version 1.0.0-alpha02
৬ জুন, ২০১৯
androidx.benchmark:1.0.0-alpha02 এবং
androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02 রিলিজ করা হয়েছে। এই ভার্সনে অন্তর্ভুক্ত
কমিট এখানে পাওয়া যাবে।
মনে রাখবেন, আমরা JSON স্কিমাকে API হিসেবে বিবেচনা করছি। আমরা অন্যান্য API-এর মতো একই স্টেবিলিটি সংক্রান্ত সীমাবদ্ধতা অনুসরণ করার পরিকল্পনা করছি: বিটাতে একবার স্টেবল (খুব বিরল ব্যতিক্রম সহ) এবং ফাইনাল রিলিজে ফিক্সড, মাইনর রিলিজে শুধুমাত্র যোগ করা এবং মেজর রিলিজে পরিবর্তন/সরানো।
API সংক্রান্ত পরিবর্তন
JSON স্কিমা ওভারহল করা হয়েছে। JSON স্কিমায় আরও পরিবর্তন করা হলে তা সম্ভবত যোগ করার মধ্যেই সীমাবদ্ধ থাকবে:
- ভবিষ্যতে অতিরিক্ত মেট্রিক গ্রুপ কাজ করবে সেই জন্য ফলাফল অবজেক্টের স্ট্রাকচার আবার সাজানো হয়েছে (b/132713021)
- টেস্ট রান কনটেক্সট তথ্য যোগ করা হয়েছে, যেমন ডিভাইস ও বিল্ড তথ্য এবং ঘড়ি লক করা আছে কিনা, টপ-লেভেল অবজেক্টে (b/132711920)
- সময় মেট্রিকের নামে এখন ‘ns’ আছে (b/132714527)
- প্রতিটি রিপোর্ট করা মেট্রিক অনুযায়ী অতিরিক্ত পরিসংখ্যান যোগ করা হয়েছে (সর্বাধিক, মধ্যম, সর্বনিম্ন) এবং সরলীকৃত 'ন্যানোস' সারসংক্ষেপ পরিসংখ্যান সরানো হয়েছে (b/132713851)
XML আউটপুট সরানো হয়েছে (b/132714414)
BenchmarkState.reportDataAPI (b/132887006) থেকে থার্মাল থ্রটল শনাক্তকরণ সরিয়ে দেওয়া হয়েছে
সমস্যার সমাধান
- Fixed
./gradlew lockClocksnot sticking on some recent OS devices (b/133424037) - এমুলেটরের জন্য থ্রটলিং শনাক্তকরণ বন্ধ করা হয়েছে (b/132880807)
ভার্সন 1.0.0-alpha01
৭ মে, ২০১৯
androidx.benchmark:benchmark:1.0.0-alpha01 রিলিজ করা হয়েছে। এই ভার্সনে অন্তর্ভুক্ত
কমিটগুলি এখানে
উপলভ্য।