বেসলাইন প্রোফাইল তৈরি করুন
সেভ করা পৃষ্ঠা গুছিয়ে রাখতে 'সংগ্রহ' ব্যবহার করুন
আপনার পছন্দ অনুযায়ী কন্টেন্ট সেভ করুন ও সঠিক বিভাগে রাখুন।
Jetpack Compose-এর পারফরম্যান্স সর্বোচ্চ করতে বেসলাইন প্রোফাইল অপরিহার্য। আপনার গুরুত্বপূর্ণ ইউজার জার্নিগুলো প্রি-কম্পাইল করলে তা আপনার Compose UI-এর মসৃণ রেন্ডারিং নিশ্চিত করতে সাহায্য করে।
Jetpack Macrobenchmark লাইব্রেরি এবং BaselineProfileRule ব্যবহার করে প্রতিটি অ্যাপ রিলিজের জন্য স্বয়ংক্রিয়ভাবে প্রোফাইল তৈরি করুন। বেসলাইন প্রোফাইল ব্যবহার করার সময় বিল্ডের উন্নতিগুলোর সুবিধা নিতে আমরা আপনাকে com.android.tools.build:gradle:8.0.0 বা তার উচ্চতর সংস্করণ ব্যবহার করার পরামর্শ দিই।
একটি নতুন বেসলাইন প্রোফাইল তৈরি করার সাধারণ ধাপগুলো হলো:
বেসলাইন প্রোফাইল মডিউলটি সেট আপ করুন।
বেসলাইন প্রোফাইল তৈরি করতে সাহায্যকারী JUnit টেস্টটি সংজ্ঞায়িত করুন।
যে গুরুত্বপূর্ণ ইউজার জার্নিগুলো (CUJ) আপনি অপ্টিমাইজ করতে চান, সেগুলো যোগ করুন।
বেসলাইন প্রোফাইলটি তৈরি করুন।
বেসলাইন প্রোফাইল তৈরি করার পর, গতির উন্নতি পরিমাপ করতে একটি বাস্তব ডিভাইস ব্যবহার করে সেটির বেঞ্চমার্ক পরীক্ষা করুন।
AGP 8.2 বা উচ্চতর সংস্করণ দিয়ে একটি নতুন বেসলাইন প্রোফাইল তৈরি করুন
একটি নতুন বেসলাইন প্রোফাইল তৈরি করার সবচেয়ে সহজ উপায় হলো বেসলাইন প্রোফাইল মডিউল টেমপ্লেট ব্যবহার করা, যা অ্যান্ড্রয়েড স্টুডিও ইগুয়ানা এবং অ্যান্ড্রয়েড গ্রেডল প্লাগইন (AGP) ৮.২ থেকে পাওয়া যায়।
অ্যান্ড্রয়েড স্টুডিও বেসলাইন প্রোফাইল জেনারেটর মডিউল টেমপ্লেটটি বেসলাইন প্রোফাইল তৈরি এবং বেঞ্চমার্ক করার জন্য একটি নতুন মডিউল তৈরির প্রক্রিয়াকে স্বয়ংক্রিয় করে। টেমপ্লেটটি চালালে বেশিরভাগ সাধারণ বিল্ড কনফিগারেশন, বেসলাইন প্রোফাইল তৈরি এবং যাচাইকরণ কোড তৈরি হয়। টেমপ্লেটটি অ্যাপ স্টার্টআপ পরিমাপ করার জন্য বেসলাইন প্রোফাইল তৈরি ও বেঞ্চমার্ক করার কোড তৈরি করে।
বেসলাইন প্রোফাইল মডিউল সেট আপ করুন
বেসলাইন প্রোফাইল মডিউল টেমপ্লেটটি চালানোর জন্য, এই ধাপগুলো অনুসরণ করুন:
ফাইল > নতুন > নতুন মডিউল নির্বাচন করুন।
টেমপ্লেট প্যানেল থেকে বেসলাইন প্রোফাইল জেনারেটর টেমপ্লেটটি নির্বাচন করুন এবং এটি কনফিগার করুন: চিত্র ১. বেসলাইন প্রোফাইল জেনারেটর মডিউল টেমপ্লেট। টেমপ্লেটের ফিল্ডগুলো হলো নিম্নরূপ:
টার্গেট অ্যাপ্লিকেশন : যে অ্যাপটির জন্য বেসলাইন প্রোফাইল তৈরি করা হয়। আপনার প্রোজেক্টে যখন কেবল একটি অ্যাপ মডিউল থাকে, তখন এই তালিকায় একটিমাত্র আইটেম থাকে।
মডিউলের নাম : যে বেসলাইন প্রোফাইল মডিউলটি তৈরি করা হচ্ছে, তার জন্য আপনার পছন্দের নাম।
প্যাকেজের নাম : বেসলাইন প্রোফাইল মডিউলের জন্য আপনার পছন্দের প্যাকেজের নাম।
ভাষা : আপনি তৈরি হওয়া কোডটি কোটলিন নাকি জাভাতে চান।
বিল্ড কনফিগারেশন ভাষা : আপনার বিল্ড কনফিগারেশন স্ক্রিপ্টগুলোর জন্য আপনি কোটলিন স্ক্রিপ্ট (KTS) নাকি গ্রুভি ব্যবহার করতে চান।
Gradle-পরিচালিত ডিভাইস ব্যবহার করুন : আপনি আপনার অ্যাপ পরীক্ষা করার জন্য Gradle-পরিচালিত ডিভাইস ব্যবহার করছেন কিনা।
ফিনিশ-এ ক্লিক করলে নতুন মডিউলটি তৈরি হয়ে যাবে। আপনি যদি সোর্স কন্ট্রোল ব্যবহার করেন, তাহলে নতুন তৈরি করা মডিউল ফাইলগুলো সোর্স কন্ট্রোলে যুক্ত করার জন্য আপনাকে অনুরোধ করা হতে পারে।
বেসলাইন প্রোফাইল জেনারেটর সংজ্ঞায়িত করুন
নতুন তৈরি করা মডিউলটিতে বেসলাইন প্রোফাইল তৈরি ও বেঞ্চমার্ক করার জন্য এবং শুধুমাত্র বেসিক অ্যাপ স্টার্টআপ পরীক্ষা করার জন্য টেস্ট রয়েছে। আমরা সুপারিশ করি যে আপনি CUJ এবং অ্যাডভান্সড স্টার্টআপ ওয়ার্কফ্লো অন্তর্ভুক্ত করার জন্য এগুলোকে আরও উন্নত করুন। নিশ্চিত করুন যে অ্যাপ স্টার্টআপ সম্পর্কিত যেকোনো টেস্ট একটি rule ব্লকের মধ্যে থাকে, যেখানে includeInStartupProfiletrue সেট করা আছে; বিপরীতভাবে, সর্বোত্তম পারফরম্যান্সের জন্য নিশ্চিত করুন যে অ্যাপ স্টার্টআপের সাথে সম্পর্কিত নয় এমন কোনো টেস্ট যেন স্টার্টআপ প্রোফাইলে অন্তর্ভুক্ত না থাকে। অ্যাপ স্টার্টআপ অপটিমাইজেশনগুলো বেসলাইন প্রোফাইলের একটি বিশেষ অংশ, যাকে স্টার্টআপ প্রোফাইল বলা হয়, তা সংজ্ঞায়িত করতে ব্যবহৃত হয়।
এই CUJ-গুলোকে জেনারেট করা বেসলাইন প্রোফাইল এবং বেঞ্চমার্ক কোড থেকে আলাদা করে রাখলে রক্ষণাবেক্ষণযোগ্যতা বাড়ে, যাতে এগুলো উভয়ের জন্যই ব্যবহার করা যায়। এর মানে হলো, আপনার CUJ-গুলোতে করা পরিবর্তনগুলো ধারাবাহিকভাবে ব্যবহৃত হয়।
বেসলাইন প্রোফাইল তৈরি এবং ইনস্টল করুন
বেসলাইন প্রোফাইল মডিউল টেমপ্লেটটি বেসলাইন প্রোফাইল তৈরি করার জন্য একটি নতুন রান কনফিগারেশন যোগ করে। আপনি যদি প্রোডাক্ট ফ্লেভার ব্যবহার করেন, তাহলে অ্যান্ড্রয়েড স্টুডিও একাধিক রান কনফিগারেশন তৈরি করে, যাতে আপনি প্রতিটি ফ্লেভারের জন্য আলাদা বেসলাইন প্রোফাইল তৈরি করতে পারেন।
চিত্র ২। এই কনফিগারেশনটি চালালে বেসলাইন প্রোফাইল তৈরি হয়।
যখন 'Generate Baseline Profile' রান কনফিগারেশনটি সম্পন্ন হয়, তখন এটি তৈরি করা বেসলাইন প্রোফাইলটিকে প্রোফাইল করা হচ্ছে এমন মডিউলের src/ variant /generated/baselineProfiles/baseline-prof.txt ফাইলে কপি করে। ভ্যারিয়েন্ট অপশনগুলো হলো হয় রিলিজ বিল্ড টাইপ অথবা রিলিজ বিল্ড টাইপ-সংশ্লিষ্ট কোনো বিল্ড ভ্যারিয়েন্ট।
জেনারেট করা বেসলাইন প্রোফাইলটি মূলত build/outputs এ তৈরি করা হয়। সম্পূর্ণ পাথটি নির্ভর করে প্রোফাইল করা অ্যাপটির ভ্যারিয়েন্ট বা ফ্লেভার এবং আপনি প্রোফাইলিংয়ের জন্য গ্রেডল-ম্যানেজড ডিভাইস নাকি কানেক্টেড ডিভাইস ব্যবহার করছেন তার উপর। আপনি যদি টেমপ্লেট দ্বারা জেনারেট করা কোড এবং বিল্ড কনফিগারেশনে ব্যবহৃত নামগুলো ব্যবহার করেন, তাহলে বেসলাইন প্রোফাইলটি build/outputs/managed_device_android_test_additional_output/nonminifiedrelease/pixel6Api31/BaselineProfileGenerator_generate-baseline-prof.txt ফাইলে তৈরি হয়। সম্ভবত আপনাকে জেনারেট করা বেসলাইন প্রোফাইলের এই সংস্করণটির সাথে সরাসরি ইন্টারঅ্যাক্ট করতে হবে না, যদি না আপনি এটিকে ম্যানুয়ালি টার্গেট মডিউলগুলোতে কপি করেন (যা সুপারিশ করা হয় না)।
AGP 8.1 দিয়ে একটি নতুন বেসলাইন প্রোফাইল তৈরি করুন
আপনি যদি বেসলাইন প্রোফাইল মডিউল টেমপ্লেট ব্যবহার করতে না পারেন, তাহলে একটি নতুন বেসলাইন প্রোফাইল তৈরি করতে ম্যাক্রোবেঞ্চমার্ক মডিউল টেমপ্লেট এবং বেসলাইন প্রোফাইল গ্রেডল প্লাগইন ব্যবহার করুন। আমরা আপনাকে অ্যান্ড্রয়েড স্টুডিও জিরাফ এবং এজিপি ৮.১ থেকে এই টুলগুলো ব্যবহার করার পরামর্শ দিই।
ম্যাক্রোবেঞ্চমার্ক মডিউল টেমপ্লেট এবং বেসলাইন প্রোফাইল গ্রেডল প্লাগইন ব্যবহার করে একটি নতুন বেসলাইন প্রোফাইল তৈরি করার ধাপগুলো নিচে দেওয়া হলো:
জেনারেটরটি অ্যাপ চালু হওয়ার বাইরেও আপনার অ্যাপের সাথে বিভিন্ন ইন্টারঅ্যাকশন ধারণ করতে পারে। এটি আপনাকে আপনার অ্যাপের রানটাইম পারফরম্যান্স অপ্টিমাইজ করতে সাহায্য করে, যেমন—তালিকা স্ক্রোল করা, অ্যানিমেশন চালানো এবং একটি Activity মধ্যে নেভিগেট করা। গুরুত্বপূর্ণ ইউজার জার্নি উন্নত করতে @BaselineProfileRule ব্যবহার করে এমন টেস্টের অন্যান্য উদাহরণ দেখুন ।
বেসলাইন প্রোফাইল গ্র্যাডল প্লাগইনটি ( libs.plugins.androidx.baselineprofile ) যোগ করুন। এই প্লাগইনটি বেসলাইন প্রোফাইল তৈরি করা এবং ভবিষ্যতে সেগুলোর রক্ষণাবেক্ষণ করা সহজ করে তোলে।
বেসলাইন প্রোফাইল তৈরি করতে, টার্মিনালে :app:generateBaselineProfile অথবা :app:generate Variant BaselineProfile গ্রেডল টাস্কগুলো চালান।
জেনারেটরটিকে একটি রুটেড ফিজিক্যাল ডিভাইস, এমুলেটর, বা গ্রেডল ম্যানেজড ডিভাইসে ইন্সট্রুমেন্টেড টেস্ট হিসেবে চালান। যদি আপনি একটি গ্রেডল ম্যানেজড ডিভাইস ব্যবহার করেন, তাহলে systemImageSource হিসেবে aosp সেট করুন, কারণ বেসলাইন প্রোফাইল জেনারেটরের জন্য আপনার রুট অ্যাক্সেস প্রয়োজন।
জেনারেশন টাস্কের শেষে, বেসলাইন প্রোফাইলটি app/src//generated/baselineProfiles এ কপি করা হয়।
টেমপ্লেট ছাড়া একটি নতুন বেসলাইন প্রোফাইল তৈরি করুন
সরাসরি বেসলাইন প্রোফাইল গ্র্যাডল প্লাগইন ব্যবহার করে কীভাবে একটি বেসলাইন প্রোফাইল তৈরি করবেন তা এখানে দেওয়া হলো:
একটি নতুন com.android.test মডিউল তৈরি করুন—উদাহরণস্বরূপ, :baseline-profile ।
:baseline-profile এর জন্য build.gradle.kts ফাইলটি কনফিগার করুন:
androidx.baselineprofile প্লাগইনটি প্রয়োগ করুন।
নিশ্চিত করুন যে targetProjectPath , :app মডিউলটিকে নির্দেশ করে।
ঐচ্ছিকভাবে, একটি গ্রেডল-পরিচালিত ডিভাইস (GMD) যোগ করুন। নিচের উদাহরণে, এটি হলো pixel6Api31 । যদি নির্দিষ্ট করে না দেওয়া হয়, তাহলে প্লাগইনটি একটি সংযুক্ত ডিভাইস ব্যবহার করে, যা অনুকৃত বা ভৌত হতে পারে।
নিম্নলিখিত উদাহরণে দেখানো অনুযায়ী আপনার পছন্দসই কনফিগারেশনটি প্রয়োগ করুন।
কোটলিন
plugins{id("com.android.test")id("androidx.baselineprofile")}android{defaultConfig{...}// Point to the app module, the module that you're generating the Baseline Profile for.targetProjectPath=":app"// Configure a GMD (optional).testOptions.managedDevices.devices{pixel6Api31(com.android.build.api.dsl.ManagedVirtualDevice){device="Pixel 6"apiLevel=31systemImageSource="aosp"}}}dependencies{...}// Baseline Profile Gradle plugin configuration. Everything is optional. This// example uses the GMD added earlier and disables connected devices.baselineProfile{// Specifies the GMDs to run the tests on. The default is none.managedDevices+="pixel6Api31"// Enables using connected devices to generate profiles. The default is// `true`. When using connected devices, they must be rooted or API 33 and// higher.useConnectedDevices=false}
গ্রুভি
plugins{id'com.android.test'id'androidx.baselineprofile'}android{defaultConfig{...}// Point to the app module, the module that you're generating the Baseline Profile for.targetProjectPath':app'// Configure a GMD (optional).testOptions.managedDevices.devices{pixel6Api31(com.android.build.api.dsl.ManagedVirtualDevice){device'Pixel 6'apiLevel31systemImageSource'aosp'}}}dependencies{...}// Baseline Profile Gradle plugin configuration. Everything is optional. This// example uses the GMD added earlier and disables connected devices.baselineProfile{// Specifies the GMDs to run the tests on. The default is none.managedDevices['pixel6Api31']// Enables using connected devices to generate profiles. The default is// `true`. When using connected devices, they must be rooted or API 33 and// higher.useConnectedDevicesfalse}
:baseline-profile টেস্ট মডিউলে একটি বেসলাইন প্রোফাইল টেস্ট তৈরি করুন। নিচের উদাহরণটি এমন একটি টেস্ট যা অ্যাপ চালুর জন্য একটি বেসলাইন প্রোফাইল তৈরি করে।
:baseline-profile মডিউলে একটি baselineProfile ডিপেন্ডেন্সি যোগ করুন।
কোটলিন
plugins{id("com.android.application")id("androidx.baselineprofile")}android{// There are no changes to the `android` block....}dependencies{...// Add a `baselineProfile` dependency on the `:baseline-profile` module.baselineProfile(project(":baseline-profile"))}
গ্রুভি
plugins{id'com.android.application'id'androidx.baselineprofile'}android{// No changes to the `android` block....}dependencies{...// Add a `baselineProfile` dependency on the `:baseline-profile` module.baselineProfile':baseline-profile'}
:app:generateBaselineProfile অথবা :app:generate Variant BaselineProfile গ্রেডল টাস্কগুলো চালিয়ে প্রোফাইলটি তৈরি করুন।
জেনারেশন টাস্কের শেষে, বেসলাইন প্রোফাইলটি app/src/ variant /generated/baselineProfiles এ কপি করা হয়।
চিত্র ৩. গাটার অ্যাকশন থেকে অ্যান্ড্রয়েড টেস্ট চালান।
যখন আপনি অ্যান্ড্রয়েড স্টুডিও-তে এটি চালান, তখন বিল্ড আউটপুটে বেসলাইন প্রোফাইলের কারণে হওয়া গতির উন্নতির বিবরণ থাকে:
StartupBenchmarks_startupCompilationBaselineProfiles
timeToInitialDisplayMs min 161.8, median 178.9, max 194.6
StartupBenchmarks_startupCompilationNone
timeToInitialDisplayMs min 184.7, median 196.9, max 202.9
সমস্ত প্রয়োজনীয় কোড পাথ ক্যাপচার করুন
অ্যাপ চালু হওয়ার সময় পরিমাপের দুটি প্রধান মেট্রিক হলো নিম্নরূপ:
সম্পূর্ণ প্রদর্শনের সময় (TTFD) : TTID এবং প্রাথমিক ফ্রেমটি প্রদর্শিত হওয়ার পরে অ্যাসিঙ্ক্রোনাসভাবে লোড হওয়া বিষয়বস্তু প্রদর্শনের সময়ের যোগফল।
ComponentActivity এর reportFullyDrawn মেথডটি কল করা হলে TTFD রিপোর্ট করা হয়। যদি reportFullyDrawn কখনও কল না করা হয়, তাহলে এর পরিবর্তে TTID রিপোর্ট করা হয়। অ্যাসিঙ্ক্রোনাস লোডিং সম্পূর্ণ না হওয়া পর্যন্ত reportFullyDrawn কল করার সময় বিলম্বিত করার প্রয়োজন হতে পারে। উদাহরণস্বরূপ, যদি UI-তে একটি ডাইনামিক লেজি লিস্ট থাকে, তাহলে লিস্টটি এমন একটি ব্যাকগ্রাউন্ড টাস্ক দ্বারা পপুলেট করা হতে পারে যা লিস্টটি প্রথমবার ড্র করার পরে এবং ফলস্বরূপ, UI-কে সম্পূর্ণ ড্র করা হিসাবে চিহ্নিত করার পরে সম্পূর্ণ হয়। এই ধরনের ক্ষেত্রে, UI সম্পূর্ণ ড্র করা অবস্থায় পৌঁছানোর পরে যে কোড চলে, তা বেসলাইন প্রোফাইলে অন্তর্ভুক্ত করা হয় না।
আপনার বেসলাইন প্রোফাইলের অংশ হিসেবে তালিকা পূরণের কাজটি অন্তর্ভুক্ত করতে, getFullyDrawnReporter ব্যবহার করে ` FullyDrawnReporter টি নিন এবং আপনার অ্যাপ কোডে এতে একটি রিপোর্টার যুক্ত করুন। ব্যাকগ্রাউন্ড টাস্কটি তালিকাটি পূরণ করা শেষ করলে রিপোর্টারটি রিলিজ করে দিন। সমস্ত রিপোর্টার রিলিজ না হওয়া পর্যন্ত FullyDrawnReporterreportFullyDrawn মেথডটি কল করে না। এটি করার মাধ্যমে, বেসলাইন প্রোফাইল তালিকাটি পূরণ করার জন্য প্রয়োজনীয় কোড পাথগুলো অন্তর্ভুক্ত করে। এটি ব্যবহারকারীর জন্য অ্যাপের আচরণে কোনো পরিবর্তন আনে না, কিন্তু এটি বেসলাইন প্রোফাইলকে সমস্ত প্রয়োজনীয় কোড পাথ অন্তর্ভুক্ত করার সুযোগ দেয়।
সম্পূর্ণরূপে অঙ্কিত অবস্থা নির্দেশ করতে, নিম্নলিখিত Compose API-গুলি ব্যবহার করুন:
ReportDrawn নির্দেশ করে যে আপনার কম্পোজেবলটি ইন্টারঅ্যাকশনের জন্য অবিলম্বে প্রস্তুত।
ReportDrawnWhen একটি প্রেডিকেট গ্রহণ করে, যেমন list.count > 0 , যা নির্দেশ করে কখন আপনার কম্পোজেবলটি ইন্টারঅ্যাকশনের জন্য প্রস্তুত।
ReportDrawnAfter একটি সাসপেন্ডিং মেথড গ্রহণ করে, যা সম্পন্ন হলে নির্দেশ করে যে আপনার কম্পোজেবলটি ইন্টারঅ্যাকশনের জন্য প্রস্তুত।
{% হুবহু %} {% endverbatim %}
আপনার জন্য প্রস্তাবিত
দ্রষ্টব্য: জাভাস্ক্রিপ্ট বন্ধ থাকলেও লিঙ্কের লেখা প্রদর্শিত হয়।
এই পৃষ্ঠার কন্টেন্ট ও কোডের নমুনাগুলি Content License-এ বর্ণিত লাইসেন্সের অধীনস্থ। Java এবং OpenJDK হল Oracle এবং/অথবা তার অ্যাফিলিয়েট সংস্থার রেজিস্টার্ড ট্রেডমার্ক।
2026-08-24 UTC-তে শেষবার আপডেট করা হয়েছে।
[null,null,["2026-08-24 UTC-তে শেষবার আপডেট করা হয়েছে।"],[],[]]