উচ্চ-প্রভাবশালী পারফরম্যান্স উন্নতির জন্য রেডিট কীভাবে R8 অপ্টিমাইজার ব্যবহার করেছে
৪ মিনিটের পাঠ
In today's world of mobile applications, a seamless user experience is not just a feature—it's a necessity. Slow load times, unresponsive interfaces, and instability can be significant barriers to user engagement and retention. During their work with the Android Developer Relations team, the engineering team at Reddit used the App Performance Score to evaluate their app. After assessing their performance, they identified significant improvement potential and decided to take the steps to enable the full power of R8, the Android app optimizer . This focused initiative led to remarkable improvements in startup times, reductions in slow or frozen frames and ANRs, and an overall increase in Play Store ratings. This case study breaks down how Reddit achieved these impressive results.
R8 অপ্টিমাইজার কীভাবে রেডিটকে সাহায্য করেছিল
আর৮ অপটিমাইজার হলো অ্যান্ড্রয়েডে পারফরম্যান্স অপটিমাইজেশনের জন্য একটি মৌলিক টুল। এটি অ্যাপের পারফরম্যান্স উন্নত করতে বিভিন্ন পদক্ষেপ গ্রহণ করে। চলুন এর মধ্যে সবচেয়ে প্রভাবশালী পদক্ষেপগুলো সংক্ষেপে দেখে নেওয়া যাক।
- একটি অ্যাপের আকার কমানোর জন্য ট্রি শেকিং সবচেয়ে গুরুত্বপূর্ণ ধাপ। এখানে, অ্যাপের ডিপেন্ডেন্সি এবং মূল অ্যাপ থেকে অব্যবহৃত কোড মুছে ফেলা হয়।
- মেথড ইনলাইনিং মেথড কলগুলোকে প্রকৃত কোড দিয়ে প্রতিস্থাপন করে, ফলে অ্যাপটির পারফরম্যান্স উন্নত হয়।
- কোডকে আরও সংক্ষিপ্ত করার জন্য ক্লাস মার্জিং এবং অন্যান্য কৌশল প্রয়োগ করা হয়। এই পর্যায়ে মূল উদ্দেশ্য আর সোর্স কোডের পাঠযোগ্যতা নয়, বরং কম্পাইল করা কোডকে দ্রুত কাজ করানো। তাই ইন্টারফেস বা ক্লাস হায়ারার্কির মতো অ্যাবস্ট্রাকশনগুলো এখানে অপ্রাসঙ্গিক এবং এগুলো সরিয়ে ফেলা হবে।
- আইডেন্টিফায়ার মিনিফিকেশন ক্লাস, ফিল্ড এবং মেথডের নাম পরিবর্তন করে ছোট ও অর্থহীন নাম দেয়। তাই
MyDataModelএর পরিবর্তে আপনার কাছে ‘a’ নামের একটি ক্লাস থাকতে পারে। - অ্যাপের আকার আরও কমাতে রিসোর্স শ্রিংকিং এক্সএমএল ফাইল এবং ড্রয়েবলের মতো অব্যবহৃত রিসোর্সগুলো সরিয়ে দেয়।

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

কীভাবে R8 রেডিটের অ্যাপের পারফরম্যান্স উন্নত করেছে
দলটি ৪০% দ্রুততর কোল্ড স্টার্টআপ , "অ্যাপ্লিকেশন নট রেসপন্ডিং" (ANR) ত্রুটি ৩০% হ্রাস , ফ্রেম রেন্ডারিং-এ ২৫% উন্নতি এবং অ্যাপের আকারে ১৪% হ্রাস লক্ষ্য করেছে।
এই উন্নতিগুলো ব্যবহারকারীর সন্তুষ্টির জন্য অত্যন্ত গুরুত্বপূর্ণ। দ্রুত স্টার্টআপের ফলে অপেক্ষার সময় কমে এবং কন্টেন্টে দ্রুত অ্যাক্সেস পাওয়া যায়। কম ANR (অ্যাক্টিভ নয়েজ রিডাকশন) অ্যাপটিকে আরও স্থিতিশীল ও নির্ভরযোগ্য করে তোলে, যা ব্যবহারকারীর বিরক্তি কমায়। মসৃণ ফ্রেম রেন্ডারিং UI-এর ঝাঁকুনি দূর করে, ফলে স্ক্রলিং এবং অ্যানিমেশন সাবলীল ও প্রতিক্রিয়াশীল মনে হয়। এই ইতিবাচক প্রযুক্তিগত প্রভাব ব্যবহারকারীর মনোভাবের মধ্যেও স্পষ্টভাবে দৃশ্যমান ছিল।
অপ্টিমাইজেশনের সাফল্যের ব্যবহারকারী সন্তুষ্টির সূচকগুলো গুগল প্লে স্টোরে সরাসরি দৃশ্যমান ছিল। R8-অপ্টিমাইজড সংস্করণটি চালু করার পর, দলটি ব্যবহারকারীদের মনোভাব এবং অংশগ্রহণে একটি নাটকীয় ও ইতিবাচক পরিবর্তন লক্ষ্য করে।

ড্রিউ হেভনার: "২ সপ্তাহেরও কম সময়ে R8-এর পূর্ণ সম্ভাবনাকে কাজে লাগানোর টুল"
সবচেয়ে উল্লেখযোগ্য বিষয় হলো, এটি একটি নিবদ্ধ প্রচেষ্টার মাধ্যমে সম্পন্ন করা হয়েছিল। রেডিটের স্টাফ সফটওয়্যার ইঞ্জিনিয়ার ড্রিউ হেভনার, যিনি এই উদ্যোগে কাজ করেছিলেন, তিনি উল্লেখ করেছেন যে R8-এর পূর্ণ সম্ভাবনাকে কাজে লাগানোর জন্য প্রয়োজনীয় পরিবর্তনগুলো বাস্তবায়ন করতে দুই সপ্তাহেরও কম সময় লেগেছিল।
প্রাপ্তি নিশ্চিতকরণ: ম্যাক্রোবেঞ্চমার্কের মাধ্যমে গভীর বিশ্লেষণ
After observing the significant real-world improvements, Reddit's engineering team and the Android Developer Relations team at Google conducted detailed benchmarks to scientifically confirm the gains and experiment with further optimizations. For this analysis, Reddit engineering provided two versions of their app: one without optimizations and another that applied R8 and two more foundational performance optimization tools: Baseline Profiles , and Startup Profiles .
বেসলাইন প্রোফাইল কার্যকরভাবে জাস্ট ইন টাইম (JIT) কম্পাইলেশন ধাপগুলোকে ব্যবহারকারীর ডিভাইস থেকে সরিয়ে ডেভেলপারদের মেশিনে নিয়ে আসে। এর ফলে তৈরি হওয়া অ্যাহেড অফ টাইম (AOT) কম্পাইল করা কোড স্টার্টআপ টাইম এবং রেন্ডারিং সমস্যা উভয়ই কমাতে পারে বলে প্রমাণিত হয়েছে।
When an app is packaged, the d8 dexer takes classes and methods and constructs your app's classes.dex files. When a user opens the app, these dex files are loaded, one after the other until the app can start. By providing a Startup Profile you let d8 know which classes and methods to pack in the first classes.dex files. This structure allows the app to load fewer files, which in turn improves startup speed.
এই পর্যায়ের মূল টুল ছিল জেটপ্যাক ম্যাক্রোবেঞ্চমার্ক , যা একটি নিয়ন্ত্রিত পরিবেশে ব্যবহারকারীর কার্যকলাপের নির্ভুল পরিমাপের সুযোগ করে দেয়। একজন সাধারণ ব্যবহারকারীর যাত্রাপথ অনুকরণ করার জন্য, তারা UIAutomator API ব্যবহার করে এমন একটি টেস্ট তৈরি করেছিল যা অ্যাপটি খোলে, তিনবার নিচে স্ক্রল করে এবং তারপর আবার উপরে স্ক্রল করে।
অবশেষে বেঞ্চমার্কটি লেখার জন্য শুধু এইটুকুই প্রয়োজন ছিল:
uiAutomator {
startApp(REDDIT)
repeat(3) {
onView { isScrollable }.fling(Direction.DOWN) }
repeat(3) {
onView {isScrollable }.fling(Direction.UP)
}
}The benchmark data confirmed the field observations and provided deeper insights. The fully optimized app started 55% faster and users could begin to browse 18% sooner . The optimized app also showed a two-thirds reduction in Just in Time (JIT) compilation occurrences and a one-third decrease in JIT compilation time . Frame rendering improved, resulting in 19% more frames being rendered over the benchmarked user journey. Finally, the app's size was reduced by over a third.

রেডিটের সামগ্রিক কর্মক্ষমতার উন্নতি
আপনি এইভাবে একটি কাস্টম ম্যাক্রোবেঞ্চমার্ক ট্রেস সেকশন মেট্রিক ব্যবহার করে JIT কম্পাইলেশন টাইম পরিমাপ করতে পারেন:
val jitCompilationMetric = TraceSectionMetric("JIT Compiling %", label = "JIT compilation")রূপান্তরের পেছনের প্রযুক্তিকে সক্ষম করা: R8
R8 সম্পূর্ণ মোডে সক্রিয় করতে, আপনাকে আপনার app/build.gradle.kts ফাইলে রিলিজ বিল্ড টাইপে minifyEnabled এবং shrinkResources true সেট করে কনফিগার করতে হবে।
android {
...
buildTypes {
release {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"keep-rules.pro",
)
}
}
}এই ধাপটি অনুসরণ করার পর শুরু থেকে শেষ পর্যন্ত সামগ্রিক পরীক্ষা করতে হবে, কারণ পারফরম্যান্স অপ্টিমাইজেশনের ফলে অনাকাঙ্ক্ষিত আচরণ দেখা দিতে পারে, যা আপনার ব্যবহারকারীদের নজরে আসার আগেই আপনার শনাক্ত করা উচিত।
As shown earlier in this article, R8 performs extensive optimizations in order to maximize your performance benefits. R8 makes substantial modifications to the code including renaming, moving, and removing classes, fields and methods. If you observe that these modifications cause errors, you need to specify which parts of the code R8 shouldn't modify by declaring those in keep rules .
আপনার অ্যাপে রেডিটের উদাহরণ অনুসরণ করুন
R8 নিয়ে রেডিটের সাফল্য এমন যেকোনো ডেভেলপমেন্ট টিমের জন্য একটি শক্তিশালী কেস স্টাডি হিসেবে কাজ করে, যারা স্বল্প পরিশ্রমে তাদের অ্যাপের পারফরম্যান্সে উল্লেখযোগ্য পরিবর্তন আনতে চায়। প্রযুক্তিগত উন্নতি এবং তার ফলস্বরূপ ব্যবহারকারীর সন্তুষ্টি বৃদ্ধির মধ্যেকার সরাসরি সম্পর্কটি পারফরম্যান্স অপটিমাইজেশনের গুরুত্বকে তুলে ধরে।
এই কেস স্টাডিতে বর্ণিত রূপরেখা অনুসরণ করে—যেমন সুযোগ শনাক্ত করতে অ্যাপ পারফরম্যান্স স্কোরের মতো টুল ব্যবহার করা, R8-এর সম্পূর্ণ অপটিমাইজেশন সম্ভাবনাকে কাজে লাগানো, বাস্তব ডেটা পর্যবেক্ষণ করা এবং বোঝাপড়া নিশ্চিত ও গভীর করতে বেঞ্চমার্ক ব্যবহার করা—অন্যান্য ডেভেলপাররাও অনুরূপ সাফল্য অর্জন করতে পারেন।
আপনার নিজের অ্যাপে R8 ব্যবহার শুরু করতে, R8 অপটিমাইজার সক্রিয় করা, কনফিগার করা এবং এর সমস্যা সমাধানের বিষয়ে সদ্য হালনাগাদ করা অফিসিয়াল ডকুমেন্টেশন ও নির্দেশিকা দেখুন।
কেস স্টাডিজমনজো হলো যুক্তরাজ্যের একটি ডিজিটাল ব্যাংক, যার গ্রাহক সংখ্যা ১৫ মিলিয়ন এবং তা ক্রমাগত বাড়ছে। অ্যাপটির পরিধি বাড়ার সাথে সাথে, ইঞ্জিনিয়ারিং টিম অ্যাপ চালু হওয়ার সময়কে উন্নতির জন্য একটি গুরুত্বপূর্ণ ক্ষেত্র হিসেবে চিহ্নিত করে, কিন্তু তারা চিন্তিত ছিল যে এর জন্য তাদের কোডবেসে বড় ধরনের পরিবর্তন আনতে হবে।
Ben Weiss , Tracy Agyemang • পড়তে ২ মিনিট
কেস স্টাডিজপারফরম্যান্স রিগ্রেশনগুলো পুনরায় ঘটানো অত্যন্ত কঠিন, যা মোবাইল ডেভেলপারদের জন্য একটি বিশাল প্রতিবন্ধকতা তৈরি করে।
Alice Yuan , Arti Arutiunov , Nikita Ogorodnikov • ৪ মিনিট পড়া
কেস স্টাডিজফটমব সম্প্রতি Wear OS ব্যবহারকারী সংখ্যার ক্ষেত্রে গত ৫ বছরের মধ্যে একদিনে সর্বোচ্চ বৃদ্ধি প্রত্যক্ষ করেছে, যা দৈনিক গড়ের চেয়ে ২-৩ গুণ বেশি। এর রহস্য কী? একটি সহজ ক্রস-ডিভাইস ইনস্টলেশন প্রক্রিয়া, যা ব্যবহারকারীদের সরাসরি তাদের ফোন থেকেই Wear OS অ্যাপটি খুঁজে পেতে সাহায্য করে।
Garan Jenkin • পড়তে ৩ মিনিট
অ্যান্ড্রয়েড ডেভেলপমেন্টের সর্বশেষ তথ্য প্রতি সপ্তাহে আপনার ইনবক্সে পান।



