বেসলাইন প্রোফাইল ওভারভিউ

বেসলাইন প্রোফাইল প্রথমবার লঞ্চ করার সময় থেকে কোড এক্সিকিউশনের স্পিড প্রায় ৩০% উন্নত করে। এটি অন্তর্ভুক্ত কোড পাথের জন্য ইন্টারপ্রিটেশন ও জাস্ট-ইন-টাইম (JIT) কম্পাইলেশন স্টেপ এড়িয়ে গিয়ে করা হয়।

কোনও অ্যাপ বা লাইব্রেরিতে বেসলাইন প্রোফাইল শিপিং করার মাধ্যমে, Android Runtime (ART) Ahead-of-Time (AOT) কম্পাইলেশনের মাধ্যমে নির্দিষ্ট কোড পাথ অপ্টিমাইজ করতে পারে, যা প্রত্যেক নতুন ব্যবহারকারী এবং প্রতিটি অ্যাপ আপডেটের জন্য পারফর্ম্যান্স উন্নত করে। এই প্রোফাইল গাইডেড অপ্টিমাইজেশন (PGO) অ্যাপকে স্টার্ট-আপ অপ্টিমাইজ করতে, ইন্টার‍্যাকশন জ্যাঙ্ক কমাতে এবং প্রথমবার লঞ্চ করার সময় থেকেই ব্যবহারকারীদের জন্য সামগ্রিক রানটাইম পারফর্ম্যান্স উন্নত করতে সাহায্য করে।

এই পারফর্ম্যান্সের উন্নতি সরাসরি ব্যবসার মেট্রিককে উন্নত করে, যেমন ব্যবহারকারী ধরে রাখা, ট্রানজ্যাকশন এবং রেটিং। পারফর্ম্যান্স কীভাবে ব্যবসার মেট্রিককে প্রভাবিত করে সেই সম্পর্কে আপনি Josh, Lyft, TikTok এবং Zomato-এর স্টোরি থেকে আরও জানতে পারবেন।

বেসলাইন প্রোফাইলের সুবিধা

বেসলাইন প্রোফাইল, অ্যাপ স্টার্ট-আপ, স্ক্রিনের মধ্যে নেভিগেট করা বা কন্টেন্ট স্ক্রল করার মতো গুরুত্বপূর্ণ ব্যবহারকারীর ইন্টার‍্যাকশনে কোডের প্রি-কম্পাইলেশন চালু করে, যার ফলে প্রথমবার রান করার সময় থেকেই সেগুলি আরও মসৃণভাবে কাজ করে। অ্যাপের স্পিড ও রেসপন্সিভনেস বাড়িয়ে, বেসলাইন প্রোফাইল দৈনিক অ্যাক্টিভ ব্যবহারকারীর সংখ্যা এবং ফিরে আসা ব্যবহারকারীর গড় হার বাড়াতে পারে।

বেসলাইন প্রোফাইল, অ্যাপ স্টার্ট-আপের বাইরে অপ্টিমাইজেশনকে গাইড করতে সাহায্য করে। এটি করার জন্য, এটি সাধারণ ব্যবহারকারীর ইন্টার‍্যাকশন প্রদান করে যা প্রথম লঞ্চ থেকে অ্যাপ রানটাইমকে উন্নত করে। গাইডেড AOT কম্পাইলেশন ব্যবহারকারীর ডিভাইসের উপর নির্ভর করে না এবং মোবাইল ডিভাইসের পরিবর্তে ডেভেলপমেন্ট মেশিনে প্রতিটি রিলিজের জন্য একবার করা যেতে পারে। বেসলাইন প্রোফাইলের সাথে রিলিজ শিপিং করার মাধ্যমে, অ্যাপ অপ্টিমাইজেশন অনেক দ্রুত উপলভ্য হয়, যা শুধুমাত্র ক্লাউড প্রোফাইল-এর উপর নির্ভর করার চেয়ে অনেক বেশি কার্যকর।

বেসলাইন প্রোফাইল ব্যবহার না করলে, সমস্ত অ্যাপ কোড হয় ইন্টারপ্রেট করার পরে মেমরিতে JIT-কম্পাইল করা হয় অথবা ডিভাইস আইডল থাকলে ব্যাকগ্রাউন্ডে একটি odex ফাইলে লেখা হয়। কোনও অ্যাপ ইনস্টল বা আপডেট করার পরে, ব্যবহারকারীরা প্রথমবার এটি চালানোর সময় থেকে শুরু করে নতুন কোড পাথ অপ্টিমাইজ না হওয়া পর্যন্ত সাবঅপ্টিমাল অভিজ্ঞতা পান। অপ্টিমাইজ করার পরে অনেক অ্যাপের পারফর্ম্যান্স প্রায় ৩০% বৃদ্ধি পায়।

স্টার্টআপ প্রোফাইল

স্টার্টআপ প্রোফাইল বেসলাইন প্রোফাইলের মতোই, তবে এটি অন-ডিভাইস অপ্টিমাইজেশনের পরিবর্তে কম্পাইল করার সময় DEX লেআউট অপ্টিমাইজ করে যাতে দ্রুত স্টার্টআপ হয়। বেসলাইন প্রোফাইল থেকে স্টার্টআপ প্রোফাইল কীভাবে আলাদা হয় সেই সম্পর্কে আরও জানতে, বেসলাইন প্রোফাইল ও স্টার্টআপ প্রোফাইলের তুলনা দেখুন। DEX লেআউট অপ্টিমাইজেশন সম্পর্কে আরও জানতে, DEX লেআউট অপ্টিমাইজেশন এবং স্টার্টআপ প্রোফাইল দেখুন।

শুরু করুন

আপনার বর্তমান অ্যাপে পারফর্ম্যান্স অপ্টিমাইজ করা শুরু করতে, বেসলাইন প্রোফাইল তৈরি করুন বিকল্প দেখুন।

প্রোফাইল জেনারেশন বনাম রিলিজ বিল্ড

বেসলাইন এবং স্টার্টআপ প্রোফাইল ফাইল (যেমন, baseline-prof.txt এবং startup-prof.txt) জেনারেট করার সময় এবং এই প্রোফাইলগুলি ব্যবহার করে আপনার ফাইনাল রিলিজ APK তৈরি করার সময় প্রয়োজনীয় বিল্ড কনফিগারেশনের পার্থক্য বোঝা গুরুত্বপূর্ণ।

প্রোফাইল ফাইল (যেমন, benchmark) তৈরি করার সময়:

কোনও পরীক্ষার মাধ্যমে বেসলাইন প্রোফাইল ক্যাপচার করার সময়, আপনার অ্যাপ যেন অস্পষ্ট না হয়। তৈরি করা প্রোফাইল নিয়ম আপনার কোডের মেথড সিগনেচারের সাথে সঠিকভাবে মিলছে কিনা তা নিশ্চিত করতে, প্রোফাইল তৈরির জন্য ব্যবহৃত বিল্ড ভেরিয়েন্টের ক্ষেত্রে আপনাকে অবফাসকেশন ও অপ্টিমাইজেশন (R8) বন্ধ করতে হবে। এই ভ্যারিয়েন্টটি আপনার রিলিজ বিল্ড ভ্যারিয়েন্ট থেকে আলাদা হতে হবে, যেটিতে অবফাসকেশন এবং অপ্টিমাইজেশন চালু আছে। আপনি প্রোফাইল জেনারেশন বিল্ড ভেরিয়েন্টের জন্য isMinifyEnabled = false সেট করে এটি করতে পারবেন। আপনি Baseline Profile Gradle প্লাগ-ইন ব্যবহার না করলে, আপনাকে -dontobfuscate এবং -dontoptimize প্রয়োগ করা হয়েছে কিনা তা নিশ্চিত করতে হবে। Baseline Profile Gradle Plugin আপনার জন্য এই কনফিগারেশন অটোমেটিক ম্যানেজ করে।

প্রোফাইল তৈরি করার সময় আপনার অ্যাপ অস্পষ্ট করা হয়নি তা আপনি যাচাই করতে পারবেন। এর জন্য আপনার তৈরি করা টেক্সট প্রোফাইল ফাইল (যেমন, baseline-prof.txt) খুলুন এবং ক্লাস ও পদ্ধতির নাম অস্পষ্ট করা হয়নি তা চেক করুন।

আপনার চূড়ান্ত রিলিজ APK তৈরি করার সময়:

আপনার রিলিজ অ্যাপ তৈরি করার সময়, আপনার অ্যাপ অস্পষ্ট করা উচিত। অবফাসকেশন, মিনিফিকেশন ও অপ্টিমাইজেশন থেকে সুবিধা পেতে আপনার রিলিজ বিল্ডে অবশ্যই isMinifyEnabled = true থাকতে হবে। R8 অটোমেটিক আপনার রিলিজ APK-তে অবফাসকেট ও অপ্টিমাইজ করা কোডের সাথে ম্যাচ করার জন্য আপনার অবফাসকেট না করা প্রোফাইল ফাইল থেকে নিয়মগুলি আবার লেখে। বিল্ডটি নিয়মগুলি সঠিকভাবে পরিবর্তন করে অস্পষ্ট টেক্সট ফাইলের সুবিধা নেয়।

আপনি যদি DEX লেআউট অপ্টিমাইজেশন (স্টার্টআপ প্রোফাইল দ্বারা পরিচালিত) কাজ করাতে চান, তাহলে আপনার রিলিজ অ্যাপটি অবশ্যই অস্পষ্ট হতে হবে এবং সমস্ত অপ্টিমাইজেশন চালু রেখে R8 ব্যবহার করতে হবে।

উন্নত (নন-গ্রেডেল) ওয়ার্কফ্লো:

আপনার প্রোফাইল তৈরি করার জন্য আপনি যদি উন্নত, নন-গ্রেডেল ওয়ার্কফ্লো (যেমন Bazel, Buck বা কাস্টম CI অটোমেশন পাইপলাইন) ব্যবহার করেন, তাহলে আপনাকে এখনও একই নীতি অনুসরণ করতে হবে। প্রোফাইল ক্যাপচার করার সময় আপনার অ্যাপ অস্পষ্ট বা অপ্টিমাইজ করা থাকলে চলবে না। তবে, আপনার রিলিজ অ্যাপ তৈরি করার সময়, আপনাকে অবশ্যই এটি অস্পষ্ট করতে হবে। R8 অবফাসকেট না করা টেক্সট রুল ফাইল প্রসেস করে এবং অবফাসকেট করা রিলিজ অ্যাপে প্রয়োগ করার জন্য সঠিকভাবে রুল ট্রান্সফর্ম করে।

ডিপেন্ডেন্সি চেন স্টেবল ও ডেভেলপমেন্টাল রিলিজ ভার্সন প্রদান করে। বেসলাইন প্রোফাইল তৈরি ও ইনস্টল করতে, Android Gradle প্লাগ-ইন, Macrobenchmark লাইব্রেরি এবং প্রোফাইল ইনস্টলারের নিম্নলিখিত কাজ করে এমন ভার্সন বা তার চেয়ে উন্নত ভার্সন ব্যবহার করুন। এইসব ডিপেন্ডেন্সি বিভিন্ন সময়ে প্রয়োজন হয় এবং একটি টুলচেন হিসেবে একসাথে কাজ করে যাতে একটি অপ্টিমাল বেসলাইন প্রোফাইল চালু করা যায়।

  • Android Gradle প্লাগ-ইন: com.android.tools.build:8.0.0
  • Macrobenchmark লাইব্রেরি: androidx.benchmark:benchmark-macro-junit4:1.5.0
  • প্রোফাইল ইনস্টলার: androidx.profileinstaller:profileinstaller:1.4.1

বেসলাইন প্রোফাইল তৈরি ও ম্যানেজ করতে আমরা AGP-এর লেটেস্ট ভার্সন ব্যবহার করার সাজেশন দিই। AGP-এর বিভিন্ন ভার্সনের সাথে যেসব প্রধান কার্যকারিতা পাওয়া যায় তার তালিকা এখানে দেওয়া হল:

AGP ভার্সন ফিচার
৯.১ সম্পূর্ণ সোর্স সেট ডিরেক্টরি সাপোর্ট (লাইব্রেরি মডিউল): ভেরিয়েন্ট-অ্যাওয়ার ডিরেক্টরি ছাড়াও, আপনি লাইব্রেরি মডিউল এবং অ্যাপ মডিউলের জন্য src/free/generated/baselineProfiles/baseline-prof1.txt-এর মতো ইচ্ছামতো নাম সহ একাধিক বেসলাইন প্রোফাইল সোর্স ফাইল ঘোষণা করতে পারেন।
৮.৪ Gradle র‍্যাপার কমান্ড লাইন টুল বা Android Studio ব্যবহার করে ডিবাগ করা যায় না এমন বিল্ডের লোকাল অ্যাপ ইনস্টলেশন বেসলাইন প্রোফাইল ইনস্টল করে, যাতে আপনার লোকাল রিলিজ বিল্ডের পারফর্ম্যান্স প্রোডাকশনের সাথে আরও ঘনিষ্ঠভাবে মেলে। এই আপডেট বেসলাইন প্রোফাইলের প্রোডাকশন পারফর্ম্যান্সের উপর প্রভাব ফেলে না।
৮.৩
  • আংশিক সোর্স সেট ডিরেক্টরি সাপোর্ট (লাইব্রেরি মডিউল): লাইব্রেরি মডিউলের জন্য ভেরিয়েন্ট-অ্যাওয়ার বেসলাইন প্রোফাইল ফাইল, যেমন src/free/generated/baselineProfiles/baseline-prof.txt, ঘোষণা করুন।
  • বেসলাইন প্রোফাইলে ডিসুগার করা ক্লাস অন্তর্ভুক্ত থাকে।
৮.২
  • R8-এর মাধ্যমে নিয়ম আবার লেখা: D8 ও R8 মানুষের-পঠনযোগ্য বেসলাইন ও স্টার্টআপ প্রোফাইল নিয়মকে পরিবর্তন করতে পারে যাতে অ্যাপের পারফর্ম্যান্স অপ্টিমাইজ করার জন্য প্রয়োজনীয় সব নিয়ম সম্পূর্ণভাবে ক্যাপচার করা যায়। এটি আপনাকে একটি আনমিনিফাইড বিল্ড থেকে প্রোফাইল তৈরি করতে এবং সেগুলিকে একটি মিনিফাইড রিলিজ বিল্ডে প্রয়োগ করতে দেয়। পদ্ধতির বেসলাইন প্রোফাইল কভারেজ ~৩০% বৃদ্ধি করে এবং অ্যাপ পারফর্ম্যান্স ~১৫% বৃদ্ধি করে।
  • স্টার্টআপ প্রোফাইল: DEX-এর মধ্যে কোডের লেআউট সম্পর্কে জানাতে এই ধরনের বেসলাইন প্রোফাইল তৈরি করুন। স্টার্ট-আপ পারফর্ম্যান্স অতিরিক্ত ~১৫% বা বড় অ্যাপের ক্ষেত্রে আরও বেশি বৃদ্ধি করে।
৮.০ সাজেস্ট করা ন্যূনতম ভার্সন: একটি Gradle টাস্কের মাধ্যমে বেসলাইন প্রোফাইল তৈরি করতে বেসলাইন প্রোফাইল Gradle প্লাগ-ইন ব্যবহার করুন।
  • সম্পূর্ণ সোর্স সেট ডিরেক্টরি সাপোর্ট (অ্যাপ মডিউল): একাধিক বেসলাইন প্রোফাইল সোর্স ফাইল ঘোষণা করুন এবং ভেরিয়েন্ট-অ্যাওয়ার ডিরেক্টরি ব্যবহার করুন, যেমন src/free/generated/baselineProfiles/baseline-prof1.txt।
৭.৪ ন্যূনতম কাজ করে এমন ভার্সন: অ্যাপ লাইব্রেরি থেকে বেসলাইন প্রোফাইল ব্যবহার করতে পারে এবং src/main/baseline-prof.txt ফাইলে নিজস্ব বেসলাইন প্রোফাইল প্রদান করতে পারে।
  • অ্যাপ বান্ডেল থেকে APK তৈরি করার সময় বেসলাইন প্রোফাইল সঠিকভাবে প্যাকেজ করা হয় (সমস্যা #২৩০৩৬১২৮৪)।
  • একাধিক .dex ফাইল সহ অ্যাপের ক্ষেত্রে, প্রাইমারি .dex ফাইলের জন্য বেসলাইন প্রোফাইল সঠিকভাবে প্যাকেজ করা হয়।
  • D8 এবং R8, বিল্ড থেকে স্টার্টআপ প্রোফাইল তৈরি করতে সাহায্য করে যেখানে isMinifyEnabled-কে false হিসেবে সেট করা হয়।

ভেরিয়েন্ট-অ্যাওয়ার প্রোফাইল সোর্স সেটিংস

অ্যাপ্লিকেশনের জন্য Android Gradle Plugin (AGP) ভার্সন ৮.০ এবং লাইব্রেরির জন্য AGP ভার্সন ৮.৩ ব্যবহার করে, আপনি একটি নির্দিষ্ট সোর্স সেট ডিরেক্টরিতে বেসলাইন প্রোফাইল সংক্রান্ত নিয়ম সেট করতে পারবেন, একটি নির্দিষ্ট পাথ (যেমন, src/main/baseline-prof.txt) ব্যবহার করার সীমাবদ্ধতা থেকে বেরিয়ে আসতে পারবেন এবং একাধিক ফাইল চালু করতে পারবেন।

এটি শক্তিশালী ভেরিয়েন্ট সাপোর্ট প্রদান করে, যার ফলে আপনি নির্দিষ্ট বিল্ড ফ্লেভার ও প্রকারের (যেমন, src/variant/baselineProfiles/-এর মতো ডিরেক্টরি ব্যবহার করে) জন্য কাস্টমাইজ করা আলাদা Baseline Profile নির্ধারণ করতে পারেন। এর ফলে, প্রতিটি অনন্য অ্যাপ্লিকেশন বা লাইব্রেরি বাইনারির জন্য পারফর্ম্যান্স অপ্টিমাইজেশন সংক্রান্ত নিয়ম সঠিকভাবে প্রয়োগ করা হয়েছে কিনা তা নিশ্চিত করা যায়।

প্রোফাইল জেনারেশনের উদাহরণ

অ্যাপ স্টার্ট-আপের জন্য বেসলাইন প্রোফাইল তৈরি করার জন্য নিম্নলিখিতটি একটি উদাহরণ ক্লাস, পাশাপাশি সাজেস্ট করা Macrobenchmark লাইব্রেরি ব্যবহার করে বেশ কয়েকটি নেভিগেশন এবং স্ক্রল ইভেন্ট:

class BaselineProfileGenerator {
    @get:Rule
    val baselineProfileRule = BaselineProfileRule()

    @Test
    fun appStartupAndUserJourneys() {
        baselineProfileRule.collect(packageName = PACKAGE_NAME) {
            uiAutomator {
                // App startup journey.
                startApp(PACKAGE_NAME)

                // Find and click elements using the new DSL
                onElement { textAsString() == "COMPOSE LAZYLIST" }.click()
                onElement { viewIdResourceName == "myLazyColumn" }.also {
                    it.fling(Direction.DOWN)
                    it.fling(Direction.UP)
                }
                pressBack()
            }
        }
    }
}

ব্যবহারকারীর অভিজ্ঞতা অটোমেট করতে UI Automator লাইব্রেরি ব্যবহার করার ব্যাপারে আরও তথ্য পেতে, UI Automator-এর সাহায্যে অটোমেটেড টেস্ট লিখুন দেখুন।

আপনি এই কোডটি সম্পূর্ণ প্রসঙ্গে এবং আমাদের GitHub-এ পারফর্ম্যান্স স্যাম্পেল-এর অংশ হিসেবে আরও বিস্তারিতভাবে দেখতে পারেন।

কী কী যোগ করতে হবে

কোনও অ্যাপে বেসলাইন প্রোফাইল ব্যবহার করার সময়, আপনি অ্যাপ স্টার্টআপ কোড এবং স্ক্রিনের মধ্যে নেভিগেশন বা স্ক্রল করার মতো সাধারণ ব্যবহারকারীর ইন্টার‍্যাকশন অন্তর্ভুক্ত করতে পারবেন। এছাড়াও, আপনি রেজিস্ট্রেশন, লগ-ইন বা পেমেন্টের মতো সম্পূর্ণ ফ্লো সংগ্রহ করতে পারবেন। আপনার কাছে গুরুত্বপূর্ণ মনে হয় এমন যেকোনও ব্যবহারকারীর অভিজ্ঞতা, রানটাইম পারফর্ম্যান্স উন্নত করার মাধ্যমে বেসলাইন প্রোফাইল থেকে উপকৃত হতে পারে।

পারফর্ম্যান্স উন্নত করার জন্য আপনি যদি বিভিন্ন পদ্ধতি নিয়ে পরীক্ষা-নিরীক্ষা করেন, তাহলে আপনার পরীক্ষার দুটি ক্ষেত্রেই বেসলাইন প্রোফাইল অন্তর্ভুক্ত করার কথা বিবেচনা করুন। এটি করার মাধ্যমে, আপনার সব ব্যবহারকারী যাতে ধারাবাহিকভাবে কম্পাইল করা কোড রান করেন তা নিশ্চিত করে আপনি নিজের ফলাফল আরও সহজে ব্যাখ্যা করতে পারবেন।

লাইব্রেরিগুলি তাদের নিজস্ব বেসলাইন প্রোফাইল প্রদান করতে পারে এবং অ্যাপের পারফর্ম্যান্স উন্নত করতে রিলিজের সাথে সেগুলি পাঠাতে পারে। যেমন, Jetpack Compose পারফর্ম্যান্সের বেসলাইন প্রোফাইল ব্যবহার করুন বিভাগটি দেখুন।

বেসলাইন প্রোফাইল কীভাবে কাজ করে

আপনার অ্যাপ বা লাইব্রেরি ডেভেলপ করার সময়, সাধারণ ব্যবহারকারীর ইন্টার‍্যাকশন কভার করতে বেসলাইন প্রোফাইল সংজ্ঞায়িত করার কথা বিবেচনা করুন, যেখানে রেন্ডার করার মোট সময় বা লেটেন্সি গুরুত্বপূর্ণ। তারা কীভাবে কাজ করে তা এখানে উল্লেখ করা হল:

  1. আপনার অ্যাপের জন্য মানুষের-পঠনযোগ্য প্রোফাইল নিয়ম তৈরি করা হয় এবং অ্যাপে বাইনারি ফর্মে কম্পাইল করা হয়। আপনি সেগুলি assets/dexopt/baseline.prof-এ খুঁজে পেতে পারেন। তারপর আপনি Android App Bundle (AAB) Google Play-তে আগের মতোই আপলোড করতে পারবেন।

  2. Google Play প্রোফাইল প্রসেস করে এবং APK-এর সাথে সরাসরি ব্যবহারকারীদের কাছে পাঠায়। ইনস্টলেশনের সময়, ART প্রোফাইলে থাকা পদ্ধতির AOT কম্পাইলেশন করে, যার ফলে সেইসব পদ্ধতি আরও দ্রুত এক্সিকিউট হয়। প্রোফাইলে অ্যাপ লঞ্চ বা ফ্রেম রেন্ডারিংয়ের সময় ব্যবহৃত পদ্ধতি থাকলে, ব্যবহারকারী আরও দ্রুত লঞ্চের সময় এবং কম জ্যাঙ্ক অনুভব করতে পারেন।

  3. এই ফ্লো, সময়ের সাথে সাথে অ্যাপের আসল ব্যবহারের উপর ভিত্তি করে পারফর্ম্যান্স ফাইন-টিউন করতে ক্লাউড প্রোফাইল অ্যাগ্রিগেশনের সাথে সহযোগিতা করে।

ছবি ১. এই ডায়াগ্রামটি আপলোড থেকে শুরু করে এন্ড-ইউজার ডেলিভারি পর্যন্ত বেসলাইন প্রোফাইল ওয়ার্কফ্লো এবং কীভাবে সেই ওয়ার্কফ্লো ক্লাউড প্রোফাইলের সাথে সম্পর্কিত তা দেখায়।

বেসলাইন প্রোফাইল ও স্টার্টআপ প্রোফাইল তুলনা করা

প্রোফাইল ফাইল নির্ধারণ ও তৈরি করতে আপনি Baseline Profile Gradle প্লাগ-ইন ব্যবহার করেন। এই প্লাগ-ইন বিল্ড প্রসেসের সাথে যুক্ত হয় এবং AGP এই মানুষের-পঠনযোগ্য প্রোফাইল নিয়মগুলিকে একটি বাইনারি ফর্ম্যাটে কম্পাইল করে—APK বা AAB-এর মধ্যে baseline.prof হিসেবে প্যাকেজ করা হয়—যা ART অন-ডিভাইস কম্পাইলেশনের জন্য কার্যকরভাবে ব্যবহার করতে পারে, যদি এটি ১.৫ এমবি-র চেয়ে ছোট হয়।

এইসব প্রোফাইল ফাইলের নাম সাধারণত startup-prof.txt এবং baseline-prof.txt হয়। যদিও তাদের কন্টেন্ট কখনও কখনও একই রকম মনে হতে পারে, বিশেষ করে আপনি যদি প্রাথমিকভাবে স্টার্টআপের উপর ফোকাস করেন, তবে তারা বিভিন্ন উদ্দেশ্যে কাজ করে এবং বিভিন্ন পর্যায়ে পারফর্ম্যান্সকে প্রভাবিত করে:

বেসলাইন প্রোফাইল

বেসলাইন প্রোফাইল ফাইলে নিয়মের একটি বিস্তারিত সেট থাকে যা Android Runtime (ART) ঘনঘন ব্যবহার করা কোড পাথ প্রি-কম্পাইল করতে ব্যবহার করে, যা শুধু স্টার্টআপের বাইরেও অ্যাপ পারফর্ম্যান্স অপ্টিমাইজ করে।

বেসলাইন প্রোফাইল ফাইলটি সাধারণত আপনার স্টার্টআপ প্রোফাইলে পাওয়া নিয়মের একটি সুপারসেট। এই ফাইলে অ্যাপ স্টার্টআপ অপ্টিমাইজেশনের (baselineProfile Gradle টাস্কের মাধ্যমে তৈরি) জন্য প্রয়োজনীয় সব নিয়ম এবং অন্যান্য ক্রিটিকাল ইউজার জার্নির জন্য অতিরিক্ত প্রোফাইল অন্তর্ভুক্ত থাকে। যেমন, স্ক্রল করা, এবং বিভিন্ন স্ক্রিনে নেভিগেট করা।

এইসব অতিরিক্ত, নন-স্টার্টআপ নিয়ম includeInStartupProfile কনফিগারেশন ফিল্ডের ভ্যালু নির্বিশেষে জেনারেট করা হয়।

স্টার্টআপ প্রোফাইল

স্টার্টআপ প্রোফাইল ফাইলে আপনার অ্যাপের স্টার্টআপ পাথের জন্য বিশেষভাবে অপ্টিমাইজ করা নিয়ম রয়েছে। কম্পাইল করার সময়, D8 জাভা বাইটকোডকে DEX ফর্ম্যাটে কনভার্ট করে। R8 তারপর আপনার DEX ফাইলের লেআউটকে প্রভাবিত করতে এই ফাইলটি ব্যবহার করে, এটি নিশ্চিত করে যে দ্রুত কার্যকর করার জন্য প্রাথমিক DEX ফাইলে গুরুত্বপূর্ণ স্টার্টআপ কোড রাখা হয়েছে। অ্যাপের প্রাথমিক ডিসপ্লের জন্য প্রয়োজনীয় টেস্ট সিনারিওতে সাধারণত includeInStartupProfile-কে true-এ সেট করা উচিত। আরও তথ্যের জন্য, স্টার্টআপ প্রোফাইল তৈরি করুন দেখুন।

Cloud Profiles

ক্লাউড প্রোফাইল, PGO-এর অতিরিক্ত ফর্ম অফার করে—Google Play Store দ্বারা অ্যাগ্রিগেট করা এবং ইনস্টল করার সময় কম্পাইলেশনের জন্য ডিস্ট্রিবিউট করা—বেসলাইন প্রোফাইলের সাথে।

অ্যাপের সাথে বাস্তব-জগতের ব্যবহারকারীর ইন্টার‍্যাকশন দ্বারা ক্লাউড প্রোফাইল পরিচালিত হলেও, আপডেট ডিস্ট্রিবিউট করার পরে সেগুলি উপলভ্য হতে কয়েক ঘণ্টা থেকে কয়েক দিন পর্যন্ত সময় লাগে, যার ফলে সেগুলির উপলভ্যতা সীমিত হয়ে যায়। প্রোফাইল সম্পূর্ণভাবে ডিস্ট্রিবিউট না হওয়া পর্যন্ত, নতুন বা আপডেট করা অ্যাপের ব্যবহারকারীদের জন্য অ্যাপ পারফর্ম্যান্স সাবঅপ্টিমাল হয়। এছাড়াও, Cloud প্রোফাইল শুধুমাত্র Android 9 (API লেভেল ২৮) বা তার পরবর্তী যেকোনও ভার্সনে চলা Android ডিভাইসে কাজ করে এবং শুধুমাত্র সেইসব অ্যাপের ক্ষেত্রে ভালভাবে স্কেল করে যেগুলির যথেষ্ট বড় ইউজার বেস আছে।

Android-এর বিভিন্ন ভার্সন জুড়ে কম্পাইলেশন সংক্রান্ত আচরণ

Android প্ল্যাটফর্মের বিভিন্ন ভার্সন আলাদা আলাদা অ্যাপ কম্পাইলেশন পদ্ধতি ব্যবহার করে, যার প্রত্যেকটির পারফর্ম্যান্সের ক্ষেত্রে কিছু সুবিধা ও অসুবিধা আছে। বেসলাইন প্রোফাইল, সব ইনস্টলের জন্য প্রোফাইল প্রদান করে আগের কম্পাইলেশন পদ্ধতিকে উন্নত করে।

Android ভার্সন কম্পাইলেশন পদ্ধতি অপ্টিমাইজেশন পদ্ধতি
৫ থেকে ৬ (API লেভেল ২১ থেকে ২৩) সম্পূর্ণ AOT ইনস্টল করার সময় সম্পূর্ণ অ্যাপ অপ্টিমাইজ করা হয়, যার ফলে অ্যাপ ব্যবহার করার জন্য অনেকক্ষণ অপেক্ষা করতে হয়, RAM ও ডিস্ক স্টোরেজে খালি জায়গা বেশি ব্যবহার হয় এবং ডিস্ক থেকে কোড লোড করতে বেশি সময় লাগে, যার ফলে কোল্ড স্টার্টআপের সময় বেড়ে যেতে পারে।
৭ থেকে ৮.১ (API লেভেল ২৪ থেকে ২৭) আংশিক AOT (বেসলাইন প্রোফাইল) অ্যাপ মডিউল এই নির্ভরতা সংজ্ঞায়িত করলে প্রথমবার রান করার সময় androidx.profileinstaller-এর মাধ্যমে বেসলাইন প্রোফাইল ইনস্টল করা হয়। অ্যাপ ব্যবহার করার সময় অতিরিক্ত প্রোফাইল নিয়ম যোগ করে এবং ডিভাইস আইডল থাকলে সেগুলি কম্পাইল করে ART এটিকে আরও উন্নত করতে পারে। এটি ডিস্ক স্টোরেজে খালি জায়গা এবং ডিস্ক থেকে কোড লোড করার সময় অপ্টিমাইজ করে, যার ফলে অ্যাপের জন্য অপেক্ষা করার সময় কমে যায়।
9 (API লেভেল 28) এবং তার পরবর্তী ভার্সন আংশিক AOT (বেসলাইন + ক্লাউড প্রোফাইল) Play অ্যাপ ইনস্টল করার সময় APK ও ক্লাউড প্রোফাইল অপ্টিমাইজ করতে বেসলাইন প্রোফাইল ব্যবহার করে—যদি উপলভ্য থাকে। ইনস্টল করার পরে, ART প্রোফাইল Play-তে আপলোড করা হয়, এগ্রিগেট করা হয় এবং তারপরে অন্যান্য ব্যবহারকারীদের অ্যাপ ইনস্টল বা আপডেট করার সময় ক্লাউড প্রোফাইল হিসেবে প্রদান করা হয়।

পরিচিত সমস্যা

সম্ভাব্য সমস্যা ও সমাধান অথবা এমন সমস্যা যার জন্য সমাধানের কাজ চলছে, সেগুলি নিচে উল্লেখ করা হল:

  • OnePlus ডিভাইস সহ কিছু ডিভাইসে অনুমতি সেটিংসের কারণে বেসলাইন প্রোফাইল জেনারেশন ব্যর্থ হতে পারে। এই সমস্যার সমাধান করতে, ডেভেলপার বিকল্প সেটিংসে গিয়ে অনুমতি মনিটর করা বন্ধ করুন বিকল্পটি বন্ধ করুন।

  • লাইব্রেরির জন্য বেসলাইন প্রোফাইল সফলভাবে প্রদান করতে, কমপক্ষে বেসলাইন প্রোফাইল Gradle প্লাগ-ইন 1.2.3 বা AGP 8.3 ব্যবহার করুন (সমস্যা #313992099)।

  • আপনি ./gradlew app:generateBaselineProfile কমান্ডের সাহায্যে বেসলাইন প্রোফাইল জেনারেট করলে, টেস্ট মডিউলে বেঞ্চমার্কও রান করে, এবং ফলাফল বাতিল করা হয়। এমনটি হলে, আপনি -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile-এর সাথে কমান্ড রান করে শুধুমাত্র বেসলাইন প্রোফাইল জেনারেট করতে পারবেন। AGP 8.2-এ এই সমস্যার সমাধান করা হয়েছে।

  • সব ধরনের বিল্ডের জন্য বেসলাইন প্রোফাইল জেনারেট করার কমান্ড— ./gradlew app:generateBaselineProfile—শুধুমাত্র রিলিজ বিল্ড টাইপের জন্য বেসলাইন প্রোফাইল জেনারেট করে। AGP 8.1-এ এই সমস্যার সমাধান করা হয়েছে।

  • Google-Play-Store নয় এমন অ্যাপ ডিস্ট্রিবিউশন চ্যানেল ইনস্টলেশনের সময় বেসলাইন প্রোফাইল ব্যবহার করা সমর্থন নাও করতে পারে। এইসব চ্যানেলের মাধ্যমে ইনস্টল করা অ্যাপের ব্যবহারকারীরা ব্যাকগ্রাউন্ড dexopt রান না করা পর্যন্ত সুবিধা দেখতে পান না—যা সাধারণত সারারাত ধরে চলে।

  • Play Store-এর ইন্টার্নাল অ্যাপ শেয়ারিং ফিচারে বেসলাইন প্রোফাইল কাজ করে না; তবে, ইন্টার্নাল টেস্টিং ট্র্যাক ফিচারে কাজ করে।

  • Huawei ডিভাইসের মতো কিছু ডিভাইসে ব্যাটারি অপ্টিমাইজেশন প্রোফাইল ইনস্টলেশনে বাধা সৃষ্টি করতে পারে। আপনার প্রোফাইল যাতে কার্যকরভাবে ইনস্টল করা হয় তা নিশ্চিত করতে, আপনার বেঞ্চমার্ক ডিভাইসে যেকোনও ব্যাটারি অপ্টিমাইজেশন বন্ধ করুন।

অতিরিক্ত রিসোর্স

আপনার জন্য সাজেস্ট করা হয়েছে