স্টাইলের সাথে পারফরম্যান্সের সুবিধা

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

রচনার পর্যায় এবং শৈলীসমূহের বিস্তার
চিত্র ১. রচনার পর্যায়সমূহ এবং শৈলীর বিস্তৃতি।

মডিফায়ারগুলোর তুলনায় পারফরম্যান্সের উন্নতি তিনটি প্রধান অপ্টিমাইজেশন থেকে আসে:

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

নিম্নলিখিত সারণিতে, স্টাইলস ছাড়া কম্পোজ-এর একটি বাস্তবায়নের সাথে তুলনা করে, কম্পোজ ১.১১.০-আলফা০৬-এর স্টাইলস-এর অভ্যন্তরীণ পারফরম্যান্স বেঞ্চমার্কের দৃষ্টান্তমূলক ফলাফল দেখানো হয়েছে।

basic_box_border_change পরীক্ষাটি প্রপার্টি আপডেটের সময় একাধিক মডিফায়ার অবজেক্টের অ্যালোকেশন এড়ানোর ক্ষেত্রে স্টাইল সিস্টেমের সক্ষমতা তুলে ধরে, যার ফলে অ্যালোকেশন প্রায় ৭৭% এবং সময় প্রায় ৫৯% হ্রাস পায়।

পরীক্ষার পদ্ধতি

বর্ণনা

সময় পরিবর্তন

বরাদ্দ পরিবর্তন

বেসিক_বক্স_বর্ডার_পরিবর্তন

আপডেট পারফরম্যান্স পরিমাপ করার জন্য একটি Box বর্ডারের রঙ পরিবর্তন করে।

-৫৯.৯১%

-৭৭.২২%

ইনপুট_স্টেট_বেসিক_বক্স

স্টাইল-ভিত্তিক হোভার/ফোকাস/প্রেস স্টেট এবং ম্যানুয়াল ইন্টারঅ্যাকশন স্টেট সংগ্রহের মধ্যে তুলনা করে।

-৫.২৪%

-১৪.৭২%

বেসিক_বক্স

পাঁচটি শৃঙ্খলিত মডিফায়ারের সাহায্যে একটি Box প্রাথমিক গঠন ও বিন্যাস পরিমাপ করে।

-৪.৭৮%

-৬.৬০%

মৌলিক_পাঠ

হার্ডকোডেড স্ট্রিং সহ পাঁচটি BasicText কম্পোনেন্ট রেন্ডার করে।

+০.৬২%

+২.৪১%

মৌলিক পাঠ্যের রঙ

স্টাইলের মাধ্যমে টেক্সটের রঙ নির্ধারণ করা এবং CompositionLocalProvider ব্যবহার করার মধ্যে তুলনা।

+৫.৮৬%

+৯.৮২%