এই পৃষ্ঠায় Microbenchmark লাইব্রেরি ব্যবহার করার সময় নন-Gradle বিল্ড সিস্টেম কনফিগার করার ব্যাপারে বর্ণনা করা হয়েছে।
যদিও Microbenchmark লাইব্রেরি Android Gradle প্লাগ-ইনের সাথে সরাসরি ইন্টিগ্রেট করার জন্য একটি Gradle প্লাগ-ইন প্রদান করে, আপনি এটি অন্যান্য বিল্ড সিস্টেমেও ব্যবহার করতে পারেন, যেমন Bazel বা Buck।
ইন্সট্রুমেন্টেশন
আপনার ইনস্ট্রুমেন্টেশন রানার হিসেবে AndroidBenchmarkRunner বা সাবক্লাস ব্যবহার করুন
টেস্ট ম্যানিফেস্টের ইনস্ট্রুমেন্টেশন ব্লকে এটি উল্লেখ করে:
<manifest package="com.example.library.test" ...> <instrumentation android:name="androidx.benchmark.junit4.AndroidBenchmarkRunner" /> ... </manifest>
সঠিক পরিমাপ পেতে, বেঞ্চমার্ক অবশ্যই ডিবাগ করা যাবে এমন হলে চলবে না। আপনি
ডিবাগ করার উপযুক্ত ফ্ল্যাগ সঠিকভাবে সেট না করলে, লাইব্রেরি ভুল ফলাফল দেখানোর পরিবর্তে
একটি সমস্যা দেখায়। Android Studio প্রোফাইলারের সাথে ব্যবহারের জন্য লোকাল রান চলাকালীন আপনাকে এই সেটিং টগল করতে হতে পারে, যার জন্য
debuggable=true প্রয়োজন।
আপনি দুটি উপায়ে রান করার জন্য Microbenchmarks তৈরি করতে পারবেন: সেল্ফ-ইনস্ট্রুমেন্টিং APK-এর মধ্যে অথবা একটি টেস্ট APK-এর মাধ্যমে অন্য APK ইনস্ট্রুমেন্ট করে।
সেল্ফ-ইনস্ট্রুমেন্টিং APK
সেল্ফ-ইনস্ট্রুমেন্টিং APK-এর সাথে—com.android.library থেকে androidTest
ডিরেক্টরির জন্য Gradle-এর আউটপুট হিসেবে—আপনাকে অবশ্যই সিঙ্গল
APK-এর Android ম্যানিফেস্টে ডিবাগেবল বিকল্প বন্ধ করতে হবে:
<manifest package="com.example.library.test" ...> <instrumentation android:name="androidx.benchmark.junit4.AndroidBenchmarkRunner" android:targetPackage="com.example.library.test"/> <application android:debuggable="false"/> </manifest>
টেস্ট APK-এর মাধ্যমে অ্যাপ APK ইন্সট্রুমেন্ট করা হয়েছে
আপনার বিল্ড যদি দুটি APK আউটপুট করে—একটি অ্যাপ APK এবং একটি টেস্ট APK, যেমন Gradle-এর মাধ্যমে
com.android.app প্যাকেজ থেকে androidTest ডিরেক্টরির জন্য আউটপুট করা হয়—তাহলে আপনাকে অবশ্যই অ্যাপ APK-কে
debuggable=false-এ সেট করতে হবে। Android OS টেস্ট APK-এর ডিবাগেবল ফ্ল্যাগ উপেক্ষা করে।
<!-- Test manifest. --> <manifest package="com.example.android.app.test" ...> <instrumentation android:name="androidx.benchmark.junit4.AndroidBenchmarkRunner" android:targetPackage="com.example.android.app"/> <!-- This debuggable is ignored by the OS. --> </manifest> <!-- App being tested. --> <manifest package="com.example.android.app" ...> <application android:debuggable="false"/> </manifest>
Android Studio এবং Gradle কোনও অ্যাপ মডিউল APK-এর মাইক্রোবেঞ্চমার্কিং সাপোর্ট করে না। এটি একটি অতিরিক্ত টেস্টিং ডিরেক্টরিকে সাপোর্ট করার জটিলতার কারণে হয় যা APK-এর একটি নন-ডিবাগেবল, অপ্টিমাইজ করা বা মিনিফাইড ভেরিয়েন্টের উপর নির্ভর করে, কিন্তু অ্যাপ কোডে বেঞ্চমার্ক থেকে কল ব্রেক না করে।
সংকলন
আমরা সাজেস্ট করি যে টেস্ট চালানোর আগে নিম্নলিখিত কমান্ড ব্যবহার করে আপনার মাইক্রোবেঞ্চমার্ক APK কম্পাইল করুন:
adb shell cmd package compile -f -m speed com.example.benchmarkছোট করা ও অপ্টিমাইজ করা
রিলিজের কাছাকাছি পারফর্ম্যান্স পেতে আপনার বেঞ্চমার্কের জন্য মিনিফিকেশন এবং অপ্টিমাইজেশন ব্যবহার করার সাজেশন দিই। উদাহরণ কোডের জন্য, বেঞ্চমার্ক স্যাম্পেল প্রোজেক্ট দেখুন।
কোড কভারেজ
আমরা কভারেজ বন্ধ করে এবং JaCoCo-এর মতো টুল ব্যবহার করে কোনও লাইব্রেরি বা DEX ম্যাঙ্গেলিং ছাড়াই বেঞ্চমার্ক চালানোর সাজেশন দিই।
এই কারণে, আমরা আপনাকে অন্যান্য ইন্সট্রুমেন্টেশন টেস্ট থেকে সোর্স সেট হিসেবে বেঞ্চমার্ক আলাদা করতে এবং রিলিজ ডিপেন্ডেন্সি সহ আলাদাভাবে তৈরি করতে সাজেস্ট করি। এর ফলে কভারেজ সহ এবং কভারেজ ছাড়া, একাধিকবার টেস্ট তৈরি করতে হয় না।
আপনার বেঞ্চমার্ক নির্ভর করে এমন লাইব্রেরির ডিবাগ ভেরিয়েন্ট, বিশেষ করে স্থানীয়ভাবে তৈরি করা ভেরিয়েন্ট, কভারেজ চালু রেখে তৈরি করা হতে পারে।
আপনার টেস্ট রান করুন
আপনি কমান্ড লাইন থেকে টেস্ট রান করতে পারবেন এবং কোন ক্লাস রান করতে হবে তা নির্দিষ্ট করতে পারবেন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
adb shell am instrument -w com.example.benchmark/androidx.benchmark.junit4.AndroidBenchmarkRunnerGradle ছাড়া রানটাইমে Microbenchmark লাইব্রেরি কনফিগার করতে, Microbenchmark ইন্সট্রুমেন্টেশন আর্গুমেন্ট দেখুন।
আপনার জন্য সাজেস্ট করা হয়েছে
- মনে রাখবেন: জাভাস্ক্রিপ্ট বন্ধ থাকলে লিঙ্ক টেক্সট দেখানো হয়
- মাইক্রোবেঞ্চমার্ক লিখুন
- বেসলাইন প্রোফাইল তৈরি করা {:#creating-profile-rules}