Gradle ছাড়াই মাইক্রোবেঞ্চমার্ক তৈরি করুন

এই পৃষ্ঠাটি Microbenchmark লাইব্রেরি ব্যবহার করার সময় একটি নন-Gradle বিল্ড সিস্টেম কনফিগার করার বর্ণনা দেয়।

যদিও Microbenchmark লাইব্রেরি Android Gradle প্লাগইনের সাথে সরাসরি সংহত করার জন্য একটি Gradle প্লাগইন পাঠায়, আপনি এটিকে অন্যান্য বিল্ড সিস্টেমে ব্যবহার করতে পারেন, যেমন Bazel বা Buck

ইন্সট্রুমেন্টেশন

টেস্ট ম্যানিফেস্টের ইন্সট্রুমেন্টেশন ব্লকে উল্লেখ করে AndroidBenchmarkRunner বা একটি সাবক্লাসকে আপনার ইন্সট্রুমেন্টেশন রানার হিসেবে ব্যবহার করুন:

<manifest
    package="com.example.library.test" ...>

    <instrumentation android:name="androidx.benchmark.junit4.AndroidBenchmarkRunner" />
    ...
</manifest>

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

আপনি দুটি উপায়ে চালানোর জন্য মাইক্রোবেঞ্চমার্ক তৈরি করতে পারেন: একটি স্ব-ইনস্ট্রুমেন্টিং APK-এর মধ্যে, অথবা একটি পরীক্ষা APK অন্য APK যন্ত্রের মাধ্যমে।

স্ব-ইনস্ট্রুমেন্টিং APK

com.android.library থেকে একটি androidTest ডিরেক্টরির জন্য Gradle-এর আউটপুট হিসাবে একটি স্ব-ইন্সট্রুমেন্টিং APK সহ — আপনাকে অবশ্যই একক 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 দ্বারা যন্ত্রযুক্ত

com.android.app প্যাকেজ থেকে androidTest ডিরেক্টরির জন্য Gradle-এর আউটপুট হিসাবে যদি আপনার বিল্ড দুটি APK—একটি অ্যাপ APK এবং টেস্ট APK আউটপুট করে—আপনাকে অবশ্যই অ্যাপ APK debuggable=false এ সেট করতে হবে। পরীক্ষা APK এর ডিবাগযোগ্য পতাকা Android OS দ্বারা উপেক্ষা করা হয়।

<!-- 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>

অ্যান্ড্রয়েড স্টুডিও এবং গ্রেডল একটি অ্যাপ মডিউল APK মাইক্রোবেঞ্চমার্কিং সমর্থন করে না। এটি একটি অতিরিক্ত টেস্টিং ডিরেক্টরিকে সমর্থন করার জটিলতার কারণে যা APK-এর একটি নন-ডিবাগেবল, অপ্টিমাইজ করা বা মিনিফাইড ভেরিয়েন্টের উপর নির্ভর করে, কিন্তু বেঞ্চমার্ক থেকে অ্যাপ কোডে কলগুলিকে মিনিফেকশন ছাড়াই।

মিনিফিকেশন এবং অপ্টিমাইজেশান

মুক্তির কাছাকাছি পারফরম্যান্স পেতে আমরা আপনার বেঞ্চমার্কের জন্য মিনিফেকশন এবং অপ্টিমাইজেশন ব্যবহার করার পরামর্শ দিই। উদাহরণ কোডের জন্য, বেঞ্চমার্ক নমুনা প্রকল্প দেখুন।

কোড কভারেজ

আমরা কভারেজ অক্ষম করে বেঞ্চমার্ক চালানোর পরামর্শ দিই এবং কোনো লাইব্রেরি ছাড়াই বা JaCoCo-এর মতো টুলের সাহায্যে DEX ম্যাঙ্গলিং ছাড়াই।

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

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

আপনার পরীক্ষা চালান

আপনি কমান্ড লাইন থেকে আপনার পরীক্ষা চালাতে পারেন এবং নিম্নলিখিত উদাহরণে দেখানো ক্লাসগুলির সাথে চালানোর জন্য নির্দিষ্ট করতে পারেন:

adb shell am instrument -w com.example.benchmark/androidx.benchmark.junit4.AndroidBenchmarkRunner

Gradle ছাড়া রানটাইমে মাইক্রোবেঞ্চমার্ক লাইব্রেরি কনফিগার করতে, মাইক্রোবেঞ্চমার্ক ইনস্ট্রুমেন্টেশন আর্গুমেন্ট দেখুন।

{% শব্দার্থে %} {% endverbatim %} {% শব্দার্থে %} {% endverbatim %}