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

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

কম্পোজের পর্যায় এবং স্টাইলস কোথায় চলে
চিত্র ১. কম্পোজের পর্যায় এবং স্টাইলগুলি কোথায় চলে।

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

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

নিচের টেবিলটি Styles-এর Compose 1.11.0-alpha06-এর জন্য একটি অভ্যন্তরীণ কর্মক্ষমতা মানদণ্ডের উদাহরণমূলক ফলাফল দেখায়, যা Styles ছাড়া Compose-এর একটি বাস্তবায়নের তুলনা করে।

basic_box_border_change পরীক্ষাটি বৈশিষ্ট্য আপডেটের সময় একাধিক সংশোধক বস্তুর বরাদ্দ এড়াতে স্টাইল সিস্টেমের শক্তিকে তুলে ধরে, যার ফলে বরাদ্দে ~77% ব্যাপক হ্রাস এবং সময় ~59% হ্রাস পায়।

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

বিবরণ

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

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

মৌলিক_বক্স_সীমানা_পরিবর্তন

আপডেটের কর্মক্ষমতা পরিমাপ করতে একটি Box সীমানার রঙ টগল করে।

-৫৯.৯১%

-৭৭.২২%

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

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

-৫.২৪%

-১৪.৭২%

বেসিক_বক্স

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

-৪.৭৮%

-৬.৬০%

মৌলিক_পাঠ্য

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

+০.৬২%

+২.৪১%

মৌলিক_পাঠ্য_প্রদত্ত_রঙ

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

+৫.৮৬%

+৯.৮২%