জেটপ্যাক কম্পোজ UI ডেভেলপমেন্টকে ত্বরান্বিত করে এবং Android ডেভেলপমেন্ট উন্নত করে । যাইহোক, একটি বিদ্যমান অ্যাপে কম্পোজ যোগ করলে কীভাবে অ্যাপের APK সাইজ, বিল্ড এবং রানটাইম পারফরম্যান্সের মতো মেট্রিক্সকে প্রভাবিত করতে পারে তা বিবেচনা করুন।
APK আকার এবং বিল্ড সময়
এই বিভাগটি সানফ্লাওয়ার স্যাম্পল অ্যাপটি দেখে APK সাইজ এবং বিল্ড টাইমের উপর প্রভাব ফেলে—এমন একটি অ্যাপ যা কম্পোজে ভিউ-ভিত্তিক অ্যাপ স্থানান্তরিত করার সেরা অনুশীলনগুলি দেখায়।
APK আকার
আপনার প্রোজেক্টে লাইব্রেরি যোগ করলে এর APK সাইজ বাড়ে। The following results are for the minified release APK of each project with resource and code shrinking enabled , using R8 full mode, and measured using APK Analyzer .
শুধুমাত্র ভিউ | মিশ্র দৃশ্য এবং রচনা | শুধুমাত্র-রচনা করুন | |
---|---|---|---|
ডাউনলোড সাইজ | 2,252 KB | 3,034 KB | 2,966 KB |
সানফ্লাওয়ারে প্রথমবার কম্পোজ যোগ করার সময়, APK সাইজ 2,252 KB থেকে 3,034 KB-এ 782 KB বৃদ্ধি পেয়েছে । জেনারেট করা APKটিতে ভিউ এবং কম্পোজের মিশ্রণ সহ UI বিল্ড রয়েছে। সূর্যমুখীতে অতিরিক্ত নির্ভরতা যুক্ত হওয়ায় এই বৃদ্ধি প্রত্যাশিত।
বিপরীতভাবে, যখন সানফ্লাওয়ারকে শুধুমাত্র-কম্পোজ অ্যাপে স্থানান্তরিত করা হয়েছিল, তখন APK আকার 3,034 KB থেকে 2,966 KB-এ 68 KB হ্রাস পেয়েছে । এই হ্রাস অব্যবহৃত ভিউ নির্ভরতা, যেমন AppCompat
এবং ConstraintLayout
অপসারণের কারণে হয়েছে।
সময় বিল্ড
কম্পোজ যোগ করা আপনার অ্যাপের বিল্ড টাইম বাড়িয়ে দেয় কারণ কম্পোজ কম্পাইলার আপনার অ্যাপে কম্পোজেবল প্রসেস করে। নিম্নলিখিত ফলাফলগুলি স্বতন্ত্র gradle-profiler
টুল ব্যবহার করে প্রাপ্ত করা হয়েছে, যা একটি বিল্ডকে বেশ কয়েকবার কার্যকর করে যাতে সূর্যমুখীর ডিবাগ বিল্ড সময়কালের জন্য গড় বিল্ড সময় পাওয়া যায়:
gradle-profiler --benchmark --project-dir . :app:assembleDebug
শুধুমাত্র ভিউ | মিশ্র দৃশ্য এবং রচনা | শুধুমাত্র-রচনা করুন | |
---|---|---|---|
গড় সময় গড় | 299.47 ms | 399.09 ms | 342.16 ms |
সূর্যমুখীতে কম্পোজ যোগ করার সময় গড় নির্মাণের সময় 299 ms থেকে 399 ms-এ 100 ms বৃদ্ধি পায় । এই সময়কালটি কম্পোজ কম্পাইলার প্রকল্পে সংজ্ঞায়িত কম্পোজ কোড রূপান্তর করার জন্য অতিরিক্ত কাজ সম্পাদন করার কারণে।
বিপরীতভাবে, গড় বিল্ড টাইম 342 ms-এ নেমে এসেছে, একটি 57 ms হ্রাস , যখন কম্পোজে সূর্যমুখীর স্থানান্তর সম্পূর্ণ হয়েছিল। এই হ্রাসটি বিভিন্ন কারণের জন্য দায়ী করা যেতে পারে যা সম্মিলিতভাবে বিল্ড টাইম কমিয়ে দেয় যেমন ডেটা বাইন্ডিং অপসারণ করা, কেএসপি-তে kapt ব্যবহার করা নির্ভরতা স্থানান্তর করা এবং তাদের সর্বশেষ সংস্করণে বেশ কয়েকটি নির্ভরতা আপডেট করা।
সারাংশ
কম্পোজ গ্রহণ করলে আপনার অ্যাপের APK সাইজ কার্যকরভাবে বৃদ্ধি পাবে এবং কম্পোজ কোডের সংকলন প্রক্রিয়ার কারণে আপনার অ্যাপের বিল্ড টাইম কর্মক্ষমতাও বৃদ্ধি পাবে। এই ট্রেডঅফগুলিকে, তবে, রচনার সুবিধার বিপরীতে ওজন করা দরকার, বিশেষ করে কম্পোজ গ্রহণ করার সময় বিকাশকারীর উত্পাদনশীলতা বৃদ্ধির চারপাশে। উদাহরণস্বরূপ, প্লে স্টোর টিম দেখেছে যে UI লেখার জন্য অনেক কম কোডের প্রয়োজন হয়, কখনও কখনও 50% পর্যন্ত , যার ফলে কোডের উত্পাদনশীলতা এবং রক্ষণাবেক্ষণযোগ্যতা বৃদ্ধি পায়।
আপনি Adopt Compose for Teams- এ আরও কেস স্টাডি পড়তে পারেন।
রানটাইম কর্মক্ষমতা
এই বিভাগে জেটপ্যাক কম্পোজের রানটাইম পারফরম্যান্সের সাথে সম্পর্কিত বিষয়গুলি কভার করা হয়েছে যাতে জেটপ্যাক কম্পোজ কীভাবে ভিউ সিস্টেমের কর্মক্ষমতার সাথে তুলনা করে এবং আপনি কীভাবে এটি পরিমাপ করতে পারেন তা বুঝতে সাহায্য করে।
স্মার্ট পুনর্গঠন
যখন UI-এর অংশগুলি অবৈধ হয়, তখন কম্পোজ শুধুমাত্র সেই অংশগুলিকে পুনর্গঠন করার চেষ্টা করে যা আপডেট করা দরকার। কম্পোজেবলের লাইফসাইকেল এবং জেটপ্যাক কম্পোজ ফেজ ডকুমেন্টেশনে এই সম্পর্কে আরও পড়ুন।
বেসলাইন প্রোফাইল
বেসলাইন প্রোফাইল সাধারণ ব্যবহারকারীর যাত্রার গতি বাড়ানোর একটি চমৎকার উপায়। আপনার অ্যাপ্লিকেশানে একটি বেসলাইন প্রোফাইল অন্তর্ভুক্ত করলে অন্তর্ভুক্ত কোড পাথগুলির জন্য ব্যাখ্যা এবং জাস্ট-ইন-টাইম (JIT) সংকলন পদক্ষেপগুলি এড়ানোর মাধ্যমে প্রথম প্রবর্তন থেকে কোড সম্পাদনের গতি প্রায় 30% উন্নত করতে পারে৷
জেটপ্যাক কম্পোজ লাইব্রেরিতে তার নিজস্ব বেসলাইন প্রোফাইল অন্তর্ভুক্ত থাকে এবং আপনি যখন আপনার অ্যাপে কম্পোজ ব্যবহার করেন তখন আপনি স্বয়ংক্রিয়ভাবে এই অপ্টিমাইজেশনগুলি পান। যাইহোক, এই অপ্টিমাইজেশনগুলি শুধুমাত্র রচনা লাইব্রেরির মধ্যে কোড পাথগুলিকে প্রভাবিত করে, তাই আমরা সুপারিশ করি যে আপনি রচনার বাইরে কোড পাথগুলি কভার করতে আপনার অ্যাপে একটি বেসলাইন প্রোফাইল যুক্ত করুন ৷
ভিউ সিস্টেমের সাথে তুলনা
জেটপ্যাক কম্পোজ ভিউ সিস্টেমে অনেক উন্নতি করেছে। এই উন্নতিগুলি নিম্নলিখিত বিভাগে বর্ণিত হয়েছে।
সবকিছুই ভিউ প্রসারিত করে
প্রতিটি View
যা স্ক্রীনে আঁকা হয়, যেমন TextView
, Button
, বা ImageView
, সব ব্যবহারের ক্ষেত্রে সমর্থন করার জন্য মেমরি বরাদ্দ, স্পষ্ট অবস্থা ট্র্যাকিং এবং বিভিন্ন কলব্যাক প্রয়োজন। অধিকন্তু, কাস্টম View
মালিকের প্রয়োজন না হলে পুনরায় অঙ্কন প্রতিরোধ করার জন্য স্পষ্ট যুক্তি প্রয়োগ করতে হবে—উদাহরণস্বরূপ, পুনরাবৃত্তিমূলক ডেটা প্রক্রিয়াকরণের জন্য।
জেটপ্যাক কম্পোজ এটিকে কয়েকটি উপায়ে সম্বোধন করে। কম্পোজে দৃশ্য আঁকার জন্য স্পষ্টভাবে আপডেটযোগ্য বস্তু নেই। UI এলিমেন্ট হল সহজ কম্পোজেবল ফাংশন যার তথ্য কম্পোজিশনে রিপ্লেযোগ্য উপায়ে লেখা হয়। এটি একটি প্রদত্ত View
টাইপের সমস্ত এক্সটেনশনের দ্বারা প্রয়োজনীয় বৈশিষ্ট্যগুলির পরিবর্তে কেবলমাত্র কম্পোজেবলগুলিতে স্পষ্ট স্টেট ট্র্যাকিং, মেমরি বরাদ্দ এবং কলব্যাকগুলি হ্রাস করতে সহায়তা করে৷
অধিকন্তু, কম্পোজ স্মার্ট রিকম্পোজিশন প্রদান করে, যদি আপনার পরিবর্তন করার প্রয়োজন না হয় তবে পূর্বে আঁকা ফলাফলটি পুনরায় প্লে করে।
একাধিক লেআউট পাস
প্রথাগত ভিউগ্রুপগুলির পরিমাপ এবং লেআউট API-এ অনেক অভিব্যক্তি রয়েছে যা তাদের একাধিক লেআউট পাসের প্রবণ করে তোলে। এই মাল্টিপল লেআউট পাসগুলি ভিউ হায়ারার্কিতে নির্দিষ্ট নেস্টেড পয়েন্টে করা হলে সূচকীয় কাজ করতে পারে।
জেটপ্যাক কম্পোজ তার API চুক্তির মাধ্যমে সমস্ত লেআউট কম্পোজেবলের জন্য একটি একক লেআউট পাস প্রয়োগ করে। এটি রচনাকে দক্ষতার সাথে গভীর UI ট্রিগুলি পরিচালনা করতে দেয়৷ একাধিক পরিমাপের প্রয়োজন হলে, রচনার অন্তর্নিহিত পরিমাপ রয়েছে।
স্টার্টআপ কর্মক্ষমতা দেখুন
প্রথমবার একটি নির্দিষ্ট লেআউট দেখানোর সময় ভিউ সিস্টেমের XML লেআউটগুলিকে স্ফীত করতে হবে। এই খরচ জেটপ্যাক কম্পোজে সংরক্ষণ করা হয়েছে যেহেতু লেআউটগুলি কোটলিনে লেখা এবং আপনার বাকি অ্যাপের মতো কম্পাইল করা হয়েছে।
বেঞ্চমার্ক রচনা
জেটপ্যাক কম্পোজ 1.0-এ, debug
এবং release
মোডে একটি অ্যাপের পারফরম্যান্সের মধ্যে উল্লেখযোগ্য পার্থক্য রয়েছে। প্রতিনিধি সময়ের জন্য, আপনার অ্যাপ প্রোফাইল করার সময় debug
পরিবর্তে সর্বদা release
বিল্ড ব্যবহার করুন।
আপনার জেটপ্যাক কম্পোজ কোড কীভাবে কাজ করছে তা পরীক্ষা করতে, আপনি জেটপ্যাক ম্যাক্রোবেঞ্চমার্ক লাইব্রেরি ব্যবহার করতে পারেন। জেটপ্যাক কম্পোজের সাথে কীভাবে এটি ব্যবহার করবেন তা শিখতে, MacrobenchmarkSample প্রকল্পটি দেখুন।
জেটপ্যাক কম্পোজ টিম ম্যাক্রোবেঞ্চমার্ক ব্যবহার করে যে কোন রিগ্রেশন ঘটতে পারে তা ধরতে। উদাহরণস্বরূপ, রিগ্রেশন ট্র্যাক করতে অলস কলাম এবং এর ড্যাশবোর্ডের বেঞ্চমার্ক দেখুন।
রচনা প্রোফাইল ইনস্টলেশন
যেহেতু জেটপ্যাক কম্পোজ একটি আনবান্ডেড লাইব্রেরি, এটি Zygote থেকে উপকৃত হয় না যা ভিউ সিস্টেমের UI টুলকিট ক্লাস এবং অঙ্কনযোগ্যগুলি প্রিলোড করে। জেটপ্যাক কম্পোজ 1.0 রিলিজ বিল্ডের জন্য প্রোফাইল ইনস্টলেশন ব্যবহার করে। প্রোফাইল ইনস্টলাররা অ্যাপগুলিকে ইন্সটলেশনের সময়ে সংকলিত সময়ের আগে (AOT) করার জন্য গুরুত্বপূর্ণ কোড নির্দিষ্ট করতে দেয়। কম্পোজ শিপ প্রোফাইল ইনস্টলেশনের নিয়ম যা স্টার্টআপের সময় কমিয়ে দেয় এবং কম্পোজ অ্যাপে জ্যাঙ্ক করে।
{% শব্দার্থে %}আপনার জন্য প্রস্তাবিত
- দ্রষ্টব্য: জাভাস্ক্রিপ্ট বন্ধ থাকলে লিঙ্ক টেক্সট প্রদর্শিত হয়
- অন্যান্য বিবেচনা
- ভিউ-এ কম্পোজ ব্যবহার করা
- স্ক্রল করুন