نمایه یک Microbenchmark

به طور پیش‌فرض، میکروبنچمارک‌ها اطلاعاتی در مورد زمان‌بندی و تخصیص کد اجرا شده به شما می‌دهند. اگر می‌خواهید بررسی کنید که چرا کد اندازه‌گیری شده به کندی اجرا می‌شود، ردیابی متد را بررسی کنید - که به طور پیش‌فرض در نسخه‌های پشتیبانی شده سیستم عامل ثبت می‌شود - یا سایر پیکربندی‌های پروفایلینگ را انتخاب کنید.

برای انتخاب پیکربندی پروفایلر، آرگومان اجراکننده‌ی ابزار دقیق 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 در دایرکتوری میزبان کپی می‌شود. برای بررسی نتایج پروفایلینگ در اندروید استودیو، لینک Method Trace یا Stack Sampling Trace را در نتایج میکروبنچمارک انتخاب کنید.

ردیابی روش

ردیابی متد زمانی مفید است که می‌خواهید کد خود را بهینه کنید، زیرا می‌تواند به شما در شناسایی متدهایی که اجرای آنها بیشتر از سایرین طول می‌کشد، کمک کند. سپس می‌توانید روی بهینه‌سازی متدهایی که بیشترین تأثیر را بر عملکرد دارند، تمرکز کنید.

پروفایلینگ به ترتیب پس از اندازه‌گیری کد انجام می‌شود، بنابراین تست شما هم زمان‌بندی دقیق و هم نتایج پروفایلینگ را ارائه می‌دهد.

ردیابی متد به طور پیش‌فرض فعال است.

توجه: در برخی از نسخه‌های سیستم عامل اندروید و ART، ردیابی متد به طور پیش‌فرض غیرفعال است. در این موارد، اندروید استودیو یک هشدار نمایش می‌دهد.

نمونه‌برداری پشته‌ای

ردیابی نمونه همچنین می‌تواند به شناسایی متدهای پرهزینه بدون سربار عملکردی ردیابی متد کمک کند. با این حال، اگر برنامه شما پس از ضبط پشته فراخوانی، متدی را وارد کند و متد قبل از ضبط بعدی خارج شود، فراخوانی متد ثبت نمی‌شود. برای ردیابی صحیح متدهایی با چرخه عمر کوتاه، به جای ردیابی نمونه از ردیابی متد استفاده کنید.

با نمونه‌گیری پشته‌ای، نمونه‌های معیار پس از اتمام گرم شدن، پشته‌ها را فراخوانی می‌کنند. شما می‌توانید رفتار نمونه‌گیری مانند فرکانس نمونه‌گیری و مدت زمان نمونه‌برداری را با استفاده از آرگومان‌های ابزار دقیق کنترل کنید.

در اندروید ۱۰ (API 29) و بالاتر، نمونه‌برداری پشته از Simpleperf برای نمونه‌برداری از callstackهای برنامه، از جمله کد C++، استفاده می‌کند. در اندروید ۹ (API 28) و پایین‌تر، از Debug.startMethodTracingSampling برای ثبت نمونه‌های پشته استفاده می‌کند.

شما می‌توانید این حالت پروفایلینگ را با اضافه کردن آرگومان‌های ابزار دقیق دیگر پیکربندی کنید:

  • androidx.benchmark.profiling.sampleFrequency

    • تعداد نمونه‌های پشته‌ای که باید در هر ثانیه گرفته شوند.
    • نوع آرگومان: عدد صحیح
    • به صورت پیش‌فرض روی ۱۰۰۰ نمونه در ثانیه تنظیم شده است.
  • androidx.benchmark.profiling.sampleDurationSeconds

    • مدت زمان اجرای بنچمارک.
    • نوع آرگومان: عدد صحیح
    • به طور پیش‌فرض روی ۵ ثانیه تنظیم شده است.
  • androidx.benchmark.profiling.skipWhenDurationRisksAnr

    • وقتی احتمال دارد که ردیابی متد باعث ANR شود، آن را نادیده می‌گیرد. شما باید این ویژگی را برای اجراهای CI فعال نگه دارید، زیرا ANRها می‌توانند در طول اجراهای طولانی CI مشکلاتی ایجاد کنند.
    • نوع آرگومان: بولی
    • پیش‌فرض روی true

هیچکدام

این آرگومان شامل یک فایل پروفایل نمی‌شود. اطلاعات مربوط به زمان‌بندی و تخصیص‌ها همچنان اندازه‌گیری می‌شوند.

{% کلمه به کلمه %} {% فعل کمکی %} {% کلمه به کلمه %} {% فعل کمکی %}