Android App Startup-এর জন্য Profile-Guided Optimization

আমরা আমাদের Android cold start ১.২ সেকেন্ড থেকে কমিয়ে ৩৮০ms-এ নিয়ে এসেছি।

বেশিরভাগ অ্যাপ প্রথমবার লঞ্চ হওয়ার সময় সবচেয়ে ধীরগতির compilation mode-এ চলে। যখন একজন ব্যবহারকারী প্রথমবার আপনার অ্যাপ ইনস্টল করেন, তখন Android "interpret-only" mode ব্যবহার করে। এটি আপনার অ্যাপের startup প্রক্রিয়াকে ধীর করে দেয়। সিস্টেম পরবর্তীতে শুধুমাত্র idle time-এর সময় কোড অপ্টিমাইজ করে।

আপনি একটি তিন-ধাপের pipeline ব্যবহার করে এটি সমাধান করতে পারেন।

১. Baseline Profiles তৈরি করুন Baseline Profiles সিস্টেমকে বলে দেয় ইনস্টল করার সময় কোন ক্লাসগুলো compile করতে হবে। আপনার CI pipeline-এ এগুলো তৈরি করতে Macrobenchmark ব্যবহার করুন। আমাদের প্রোফাইলগুলো মাত্র ১২% method কভার করলেও ৯৪% startup time নিয়ন্ত্রণ করেছে।

২. DEX Layout Reordering চালু করুন এটি আপনার Gradle properties-এ মাত্র একটি লাইন। এটি R8-কে নির্দেশ দেয় যাতে আপনার DEX ফাইলে startup ক্লাসগুলোকে একত্রে গ্রুপ করা হয়। এটি page faults ৩০% থেকে ৫০% কমিয়ে দেয়। যখন ক্লাসগুলো একত্রে থাকে, তখন সিস্টেম ডিস্ক থেকে কম অপ্রয়োজনীয় ডেটা লোড করে।

৩. Cloud Profiles ব্যবহার করুন Google Play ব্যবহারকারীদের কাছ থেকে প্রোফাইল সংগ্রহ করে এবং সেগুলো নতুন ইনস্টলেশনগুলোতে পাঠিয়ে দেয়। এটি আপনার গতির উন্নতিকে বহুগুণ বাড়িয়ে দেয়।

আমাদের টেস্টিংয়ের ফলাফল:

আপনার কাজের জন্য কিছু গুরুত্বপূর্ণ টিপস:

দ্রুততর অ্যাপ তৈরির জন্য এই স্তরগুলোকে (layers) একত্রে ব্যবহার করুন।

Source: https://dev.to/software_mvp-factory/profile-guided-optimization-for-android-app-startup-2i7a