ডিফল্টরূপে, মাইক্রোবেঞ্চমার্ক আপনাকে সম্পাদিত কোডের টাইমিং এবং অ্যালোকেশন সম্পর্কে তথ্য দেয়। পরিমাপকৃত কোডটি কেন ধীরগতিতে চলছে তা যদি আপনি অনুসন্ধান করতে চান, তবে মেথড ট্রেসটি পরীক্ষা করুন—যা সমর্থিত OS সংস্করণগুলিতে ডিফল্টরূপে ক্যাপচার করা হয়—অথবা অন্যান্য প্রোফাইলিং কনফিগারেশন নির্বাচন করুন।
প্রোফাইলার কনফিগারেশন নির্বাচন করতে, নিম্নলিখিত কোড স্নিপেটে দেখানো অনুযায়ী androidx.benchmark.profiling.mode ইন্সট্রুমেন্টেশন রানার আর্গুমেন্টটি যোগ করুন এবং এর সাথে MethodTracing (ডিফল্ট), StackSampling বা None আর্গুমেন্টের মধ্যে যেকোনো একটি বেছে নিন।
বিকল্পগুলো সম্পর্কে আরও তথ্যের জন্য, “Record Java/Kotlin methods” দেখুন। MethodTracing হলো tracing-এর সমতুল্য, এবং StackSampling হলো sampling-এর সমতুল্য, যা সেই নথিতে সংজ্ঞায়িত করা হয়েছে।
গ্রুভি
android { defaultConfig { // must be one of: 'None', 'StackSampling', or 'MethodTracing' testInstrumentationRunnerArguments["androidx.benchmark.profiling.mode"]= 'StackSampling' } }
কোটলিন
android { defaultConfig { // must be one of: 'None', 'StackSampling', or 'MethodTracing' testInstrumentationRunnerArguments["androidx.benchmark.profiling.mode"] = "StackSampling" } }
যখন আপনি কোনো বেঞ্চমার্ক প্রোফাইল করেন, তখন একটি আউটপুট .trace ফাইল JSON ফলাফলের পাশাপাশি হোস্টের ডিরেক্টরিতে কপি করা হয়। Android Studio-তে প্রোফাইলিং-এর ফলাফল দেখতে, মাইক্রোবেঞ্চমার্কের ফলাফলে থাকা Method Trace বা Stack Sampling Trace লিঙ্কটি নির্বাচন করুন।
মেথডট্রেসিং
আপনার কোড অপ্টিমাইজ করার সময় মেথড ট্রেসিং বেশ কার্যকর, কারণ এটি আপনাকে সেইসব মেথড শনাক্ত করতে সাহায্য করে যেগুলো অন্যগুলোর চেয়ে বেশি সময় নেয়। এরপর আপনি পারফরম্যান্সের উপর সবচেয়ে বেশি প্রভাব ফেলে এমন মেথডগুলো অপ্টিমাইজ করার দিকে মনোযোগ দিতে পারেন।
কোড পরিমাপের পর ক্রমানুসারে প্রোফাইলিং সম্পন্ন হয়, ফলে আপনার টেস্টটি সঠিক টাইমিং এবং প্রোফাইলিং উভয় ফলাফলই আউটপুট হিসেবে দেয়।
মেথড ট্রেসিং ডিফল্টরূপে চালু থাকে।
স্ট্যাকস্যাম্পলিং
স্যাম্পল ট্রেসিং, মেথড ট্রেসিংয়ের অতিরিক্ত পারফরম্যান্স চাপ ছাড়াই ব্যয়বহুল মেথডগুলো শনাক্ত করতে সাহায্য করতে পারে। তবে, যদি আপনার অ্যাপ একটি কল স্ট্যাক ক্যাপচার করার পরে কোনো মেথডে প্রবেশ করে এবং পরবর্তী ক্যাপচারের আগেই মেথডটি থেকে বেরিয়ে যায়, তাহলে সেই মেথড কলটি লগ করা হয় না। স্বল্প জীবনচক্রের মেথডগুলোকে সঠিকভাবে ট্র্যাক করতে, স্যাম্পল ট্রেসিংয়ের পরিবর্তে মেথড ট্রেসিং ব্যবহার করুন।
স্ট্যাক স্যাম্পলিং-এর মাধ্যমে, ওয়ার্মআপ শেষ হওয়ার পর বেঞ্চমার্কটি কল স্ট্যাক স্যাম্পল করে। আপনি ইন্সট্রুমেন্টেশন আর্গুমেন্ট ব্যবহার করে স্যাম্পলিংয়ের আচরণ, যেমন স্যাম্পল ফ্রিকোয়েন্সি এবং স্যাম্পলিংয়ের সময়কাল , নিয়ন্ত্রণ করতে পারেন।
অ্যান্ড্রয়েড ১০ (এপিআই ২৯) এবং এর পরবর্তী সংস্করণগুলোতে, স্ট্যাক স্যাম্পলিং সি++ কোড সহ অ্যাপ কলস্ট্যাক স্যাম্পল করার জন্য সিম্পলপার্ফ (Simpleperf) ব্যবহার করে। অ্যান্ড্রয়েড ৯ (এপিআই ২৮) এবং এর পূর্ববর্তী সংস্করণগুলোতে, এটি স্ট্যাক স্যাম্পল ক্যাপচার করার জন্য Debug.startMethodTracingSampling ব্যবহার করে।
আপনি আরও ইন্সট্রুমেন্টেশন আর্গুমেন্ট যোগ করে এই প্রোফাইলিং মোডটি কনফিগার করতে পারেন:
androidx.benchmark.profiling.sampleFrequency- প্রতি সেকেন্ডে ক্যাপচার করার জন্য স্ট্যাক স্যাম্পলের সংখ্যা।
- আর্গুমেন্টের ধরণ: পূর্ণসংখ্যা
- ডিফল্টরূপে প্রতি সেকেন্ডে ১০০০ স্যাম্পল ব্যবহৃত হয়।
androidx.benchmark.profiling.sampleDurationSeconds- বেঞ্চমার্কটি চলার সময়কাল।
- আর্গুমেন্টের ধরণ: পূর্ণসংখ্যা
- ডিফল্ট মান ৫ সেকেন্ড।
androidx.benchmark.profiling.skipWhenDurationRisksAnr- যখন ANR ঘটার সম্ভাবনা থাকে, তখন মেথড ট্রেসিং এড়িয়ে যায়। CI রানের জন্য এটি সক্রিয় রাখা উচিত, কারণ দীর্ঘ CI রানের সময় ANR সমস্যা সৃষ্টি করতে পারে।
- আর্গুমেন্টের ধরণ: বুলিয়ান
- ডিফল্টরূপে
true
কোনোটিই না
এই আর্গুমেন্টটি কোনো প্রোফাইলিং ফাইল ক্যাপচার করে না। তবে টাইমিং এবং অ্যালোকেশন সম্পর্কিত তথ্য পরিমাপ করা হয়।
{% হুবহু %}আপনার জন্য প্রস্তাবিত
- দ্রষ্টব্য: জাভাস্ক্রিপ্ট বন্ধ থাকলেও লিঙ্কের লেখা প্রদর্শিত হয়।
- মাইক্রোবেঞ্চমার্ক ইন্সট্রুমেন্টেশন আর্গুমেন্টস
- কন্টিনিউয়াস ইন্টিগ্রেশনে বেঞ্চমার্ক চালান