نمایه‌سازی ریزمحک

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

برای انتخاب پیکربندی نمایه‌ساز، آرگومان اجراکننده ابزار دقیق androidx.benchmark.profiling.mode را با یکی از آرگومان‌های MethodTracing (پیش‌فرض)، StackSampling، یا None اضافه کنید، همان‌طور که در قطعه کد زیر نشان داده شده است.

برای اطلاعات بیشتر درباره گزینه‌ها، ضبط روش‌های جاوا/کاتلین را ببینید. 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"
    }
}

وقتی محک را نمایه می‌کنید، فایل خروجی .trace در میزبان در دایرکتوری در کنار نتایج JSON کپی می‌شود. برای بررسی نتایج نمایه‌سازی در «استودیو Android»، پیوند ردیابی روش‌ها یا ردیابی نمونه‌برداری پشته را در نتایج ریز محک انتخاب کنید.

MethodTracing

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

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

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

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

StackSampling

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

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

در Android 10 (میانای برنامه‌سازی کاربردی ۲۹) و بالاتر، نمونه‌گیری پشته از Simpleperf برای نمونه‌گیری پشته‌های فراخوانی برنامه، ازجمله کد ++C، استفاده می‌کند. در Android 9 (میانای برنامه‌سازی کاربردی ۲۸) و پایین‌تر، از Debug.startMethodTracingSampling برای ضبط نمونه‌های پشته استفاده می‌کند.

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

  • androidx.benchmark.profiling.sampleFrequency

    • تعداد نمونه‌های پشته برای ضبط در هر ثانیه.
    • نوع متغیر مستقل: عدد صحیح
    • به‌طور پیش‌فرض ۱۰۰۰ نمونه در ثانیه است.
  • androidx.benchmark.profiling.sampleDurationSeconds

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

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

هیچ‌کدام

این آرگومان فایل نمایه‌سازی را ضبط نمی‌کند. اطلاعات مربوط به زمان‌بندی و تخصیص‌ها هنوز درحال اندازه‌گیری است.