মাইক্রোবেঞ্চমার্ক প্রোফাইল করুন

ডিফল্ট হিসেবে, Microbenchmarks আপনাকে এক্সিকিউট করা কোডের টাইমিং ও অ্যালোকেশন সম্পর্কে তথ্য দেয়। পরিমাপ করা কোড কেন ধীরে চলছে তা আপনি তদন্ত করতে চাইলে, মেথড ট্রেস দেখুন—যা ডিফল্ট হিসেবে OS-এর কাজ করে এমন ভার্সনে—ক্যাপচার করা হয় অথবা অন্য প্রোফাইলিং কনফিগারেশন বেছে নিন।

প্রোফাইলার কনফিগারেশন বেছে নিতে, MethodTracing (ডিফল্ট), StackSampling বা None আর্গুমেন্টের মধ্যে যেকোনও একটির সাথে androidx.benchmark.profiling.mode ইনস্ট্রুমেন্টেশন রানার আর্গুমেন্ট যোগ করুন, যেমনটি নিম্নলিখিত স্নিপেটে দেখানো হয়েছে।

বিকল্প সম্পর্কে আরও তথ্যের জন্য, Java/Kotlin পদ্ধতি রেকর্ড করুন দেখুন। MethodTracing হল ট্রেসিংয়ের সমতুল্য এবং StackSampling হল স্যাম্পলিংয়ের সমতুল্য, যেমনটি সেই ডকুমেন্টে সংজ্ঞায়িত করা হয়েছে।

গ্ৰুভি

android {
    defaultConfig {
        // must be one of: 'None', 'StackSampling', or 'MethodTracing'
        testInstrumentationRunnerArguments["androidx.benchmark.profiling.mode"]= 'StackSampling'
    }
}

Kotlin

android {
    defaultConfig {
        // must be one of: 'None', 'StackSampling', or 'MethodTracing'
        testInstrumentationRunnerArguments["androidx.benchmark.profiling.mode"] = "StackSampling"
    }
}

আপনি কোনও বেঞ্চমার্ক প্রোফাইল করলে, একটি আউটপুট .trace ফাইল হোস্টে কপি করা হয় JSON ফলাফলের পাশাপাশি ডিরেক্টরিতে। Android Studio-তে প্রোফাইলিং ফলাফল পরীক্ষা করতে, মাইক্রোবেঞ্চমার্ক ফলাফলে মেথড ট্রেস বা স্ট্যাক স্যাম্পলিং ট্রেস লিঙ্ক বেছে নিন।

MethodTracing

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

কোড পরিমাপের পরে প্রোফাইলিং সিকোয়েন্সে ঘটে, তাই আপনার টেস্ট আউটপুট সঠিক সময় এবং প্রোফাইলিং ফলাফল উভয়ই দেখায়।

ডিফল্ট হিসেবে মেথড ট্রেসিং চালু থাকে।

মনে রাখবেন: কিছু Android OS এবং ART ভার্সনে, মেথড ট্রেসিং ডিফল্ট হিসেবে বন্ধ থাকে। এইসব ক্ষেত্রে, Android Studio একটি সতর্কতা দেখায়।

StackSampling

এছাড়াও, স্যাম্পেল ট্রেসিং, মেথড ট্রেসিংয়ের পারফর্ম্যান্স ওভারহেড ছাড়াই দামী মেথড শনাক্ত করতে সাহায্য করতে পারে। তবে, কল স্ট্যাক ক্যাপচার করার পরে আপনার অ্যাপ কোনও মেথডে প্রবেশ করলে এবং পরবর্তী ক্যাপচারের আগে মেথডটি বন্ধ হয়ে গেলে, মেথড কল লগ করা হয় না। স্বল্প জীবনচক্র সহ পদ্ধতিগুলি সঠিকভাবে ট্র্যাক করতে, স্যাম্পেল ট্রেসিংয়ের পরিবর্তে মেথড ট্রেসিং ব্যবহার করুন।

স্ট্যাক স্যাম্পেলিংয়ের মাধ্যমে, ওয়ার্মআপ সম্পূর্ণ হওয়ার পরে বেঞ্চমার্ক স্যাম্পেল কল স্ট্যাক করে। আপনি ইন্সট্রুমেন্টেশন আর্গুমেন্ট ব্যবহার করে স্যাম্পলিং আচরণ যেমন স্যাম্পেল ফ্রিকোয়েন্সি এবং স্যাম্পলিংয়ের সময়কাল নিয়ন্ত্রণ করতে পারেন।

Android 10 (API 29) এবং তার পরবর্তী ভার্সনে, স্ট্যাক স্যাম্পলিং C++ কোড সহ অ্যাপ কলস্ট্যাক স্যাম্পেল করতে Simpleperf ব্যবহার করে। Android 9 (API 28) এবং তার আগের ভার্সনে, স্ট্যাক স্যাম্পেল ক্যাপচার করতে এটি Debug.startMethodTracingSampling ব্যবহার করে।

আপনি অন্য একটি ইন্সট্রুমেন্টেশন আর্গুমেন্ট যোগ করে এই প্রোফাইলিং মোড কনফিগার করতে পারেন:

  • androidx.benchmark.profiling.sampleFrequency

    • প্রতি সেকেন্ডে ক্যাপচার করার জন্য স্ট্যাক স্যাম্পেলের সংখ্যা।
    • আর্গুমেন্টের ধরন: পূর্ণসংখ্যা
    • ডিফল্ট হিসেবে প্রতি সেকেন্ডে ১০০০টি স্যাম্পেল।
  • androidx.benchmark.profiling.sampleDurationSeconds

    • বেঞ্চমার্ক রান করার সময়সীমা।
    • আর্গুমেন্টের ধরন: পূর্ণসংখ্যা
    • ডিফল্ট হিসেবে ৫ সেকেন্ড সেট করা থাকে।
  • androidx.benchmark.profiling.skipWhenDurationRisksAnr

    • ANR হওয়ার সম্ভাবনা থাকলে মেথড ট্রেসিং এড়িয়ে যায়। CI রান করার জন্য এটি চালু রাখা উচিত, কারণ দীর্ঘ CI রান করার সময় ANR সমস্যা সৃষ্টি করতে পারে।
    • আর্গুমেন্টের ধরন: বুলিয়ান
    • ডিফল্ট হিসেবে true সেট করা থাকে

কোনওটিই নয়

এই আর্গুমেন্ট প্রোফাইলিং ফাইল ক্যাপচার করে না। সময় ও বরাদ্দ সংক্রান্ত তথ্য এখনও পরিমাপ করা হয়।