একটি মাইক্রোবেঞ্চমার্ক প্রোফাইল

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

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

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

খাঁজকাটা

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"
    }
}

যখন আপনি একটি বেঞ্চমার্ক প্রোফাইল করেন, তখন JSON ফলাফলের পাশাপাশি ডিরেক্টরিতে হোস্টে একটি আউটপুট .trace ফাইল কপি করা হয়। Android Studio-তে প্রোফাইলিং ফলাফল পরিদর্শন করতে, মাইক্রোবেঞ্চমার্ক ফলাফলে Method Trace অথবা Stack Sampling Trace লিঙ্কটি নির্বাচন করুন।

মেথডট্রেসিং

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

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

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

দ্রষ্টব্য: কিছু Android OS এবং ART সংস্করণে, পদ্ধতি ট্রেসিং ডিফল্টরূপে বন্ধ থাকে। এই ক্ষেত্রে, Android Studio একটি সতর্কতা আউটপুট করে।

স্ট্যাকস্যাম্পলিং

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

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

অ্যান্ড্রয়েড ১০ (এপিআই ২৯) এবং তার পরবর্তী সংস্করণে, স্ট্যাক স্যাম্পলিং সিমপ্লেপারফ ব্যবহার করে অ্যাপ কলস্ট্যাকের নমুনা সংগ্রহ করে, যার মধ্যে সি++ কোডও অন্তর্ভুক্ত। অ্যান্ড্রয়েড ৯ (এপিআই ২৮) এবং তার পরবর্তী সংস্করণে, এটি স্ট্যাক স্যাম্পল ক্যাপচার করতে Debug.startMethodTracingSampling ব্যবহার করে।

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

  • androidx.benchmark.profiling.sampleFrequency

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

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

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

কোনটিই নয়

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

{% অক্ষরে অক্ষরে %} {% এন্ডভারব্যাটিম %} {% অক্ষরে অক্ষরে %} {% এন্ডভারব্যাটিম %}