تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
توفّر لك اختبارات Microbenchmark تلقائيًا معلومات حول توقيت الرمز البرمجي الذي تم تنفيذه وعمليات التخصيص. إذا أردت معرفة سبب بطء تشغيل الرمز الذي تم قياسه، يمكنك فحص تتبُّع الطريقة، الذي يتم تسجيله تلقائيًا على إصدارات نظام التشغيل المتوافقة، أو اختيار إعدادات أخرى لتحديد المشاكل.
لاختيار إعدادات أداة تحليل الأداء، أضِف وسيطة مشغّل أدوات القياس
androidx.benchmark.profiling.mode مع إحدى الوسيطات
MethodTracing (تلقائي) أو
StackSampling أو None، كما هو موضّح في المقتطف التالي.
لمزيد من المعلومات حول الخيارات، يُرجى الاطّلاع على تسجيل طرق Java/Kotlin.
MethodTracing هي عملية تتبُّع، وStackSampling هي عملية أخذ عيّنات كما هو موضّح في هذا المستند.
Groovy
android{defaultConfig{// must be one of: 'None', 'StackSampling', or 'MethodTracing'testInstrumentationRunnerArguments["androidx.benchmark.profiling.mode"]='StackSampling'}}
Kotlin
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 (المستوى 29 لواجهة برمجة التطبيقات) والإصدارات الأحدث، تستخدم ميزة أخذ عينات من سلسلة استدعاء الدوال البرمجية Simpleperf لأخذ عينات من سلاسل استدعاء الدوال البرمجية للتطبيقات، بما في ذلك رمز C++. في الإصدار 9 من نظام التشغيل Android (المستوى 28 لواجهة برمجة التطبيقات) والإصدارات الأقدم، يتم استخدام
Debug.startMethodTracingSampling لتسجيل عيّنات من تسلسل استدعاء الدوال البرمجية.
يمكنك ضبط وضع إنشاء الملفات هذا من خلال إضافة وسيطات أخرى لتسجيل البيانات:
تتخطّى تتبُّع الأساليب عندما يكون من المحتمل أن يتسبّب ذلك في حدوث خطأ ANR. يجب إبقاء هذا الخيار مفعّلاً عند إجراء عمليات CI، لأنّ أخطاء ANR يمكن أن تتسبّب في مشاكل أثناء عمليات CI الطويلة.
نوع الوسيطة: قيمة منطقية
القيمة التلقائية هي true
بدون تحديد نمط
لا تسجّل هذه الوسيطة ملف بيانات الأداء. سيستمر قياس المعلومات المتعلقة بالتوقيتات وعمليات التخصيص.
اقتراحات مخصصة لك
ملاحظة: يتم عرض نص الرابط عندما تكون JavaScript غير مفعّلة
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-08-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-08-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["By default, Microbenchmarks give you information about the timing and\nallocations of the executed code. If you want to investigate why the measured\ncode is running slowly, inspect the method trace---captured by default on\n[supported OS versions](#method-tracing-default-support)---or select other\nprofiling configurations.\n\nTo select the profiler configuration, add the instrumentation runner argument\n`androidx.benchmark.profiling.mode` with one of\n[`MethodTracing`](#method-tracing) (default),\n[`StackSampling`](#stack-sampling), or [`None`](#none) argument, as shown in the\nfollowing snippet.\n\nFor more information about the options, see [Record Java/Kotlin methods](/studio/profile/record-java-kotlin-methods).\n`MethodTracing` is the equivalent of tracing, and `StackSampling` is the\nequivalent of sampling as defined in that document. \n\nGroovy \n\n```groovy\nandroid {\n defaultConfig {\n // must be one of: 'None', 'StackSampling', or 'MethodTracing'\n testInstrumentationRunnerArguments[\"androidx.benchmark.profiling.mode\"]= 'StackSampling'\n }\n}\n```\n\nKotlin \n\n```kotlin\nandroid {\n defaultConfig {\n // must be one of: 'None', 'StackSampling', or 'MethodTracing'\n testInstrumentationRunnerArguments[\"androidx.benchmark.profiling.mode\"] = \"StackSampling\"\n }\n}\n```\n\nWhen you profile a benchmark, an output `.trace` file is copied to the host in\nthe directory [alongside JSON results](/topic/performance/benchmarking/microbenchmark-write#benchmark-results). To inspect profiling results in\nAndroid Studio, select the **Method Trace** or **Stack Sampling Trace** link\nin the microbenchmark results.\n| **Note:** The Microbenchmark library automatically captures system tracing, but with custom tracing sections disabled---it ignores calls to `Trace.beginSection and endSection`---to prevent interference from tracing overhead.\n\nMethodTracing\n\nMethod tracing is useful when you are trying to optimize your code because it\ncan help you identify the methods that take longer to run than others. You can\nthen focus on optimizing the methods that have the most impact on performance.\n\nProfiling occurs in sequence after code measurement, so your test outputs both\naccurate timing and profiling results.\n\nMethod tracing is on by default. \n**Note:** On some Android OS and ART versions, method tracing is off by default. In these cases, Android Studio outputs a warning.\n\nStackSampling\n\nSample tracing can also help identify expensive methods without the\nperformance overhead of method tracing. However, if your app enters a method\nafter a call stack has been captured and the method exits before the next\ncapture, then the method call is not logged. To properly track methods with\nshort life cycles, use method tracing instead of sample tracing.\n\nWith stack sampling, the benchmark samples call stacks after the warmup is\ncomplete. You can control sampling behavior such as the\n[sample frequency](#profiling-samplefrequency)\nand [duration of sampling](#profiling-sampleduration) using instrumentation\narguments.\n\nOn Android 10 (API 29) and higher, stack sampling uses [Simpleperf](/ndk/guides/simpleperf) to sample\napp callstacks, including C++ code. On Android 9 (API 28) and lower, it uses\n[`Debug.startMethodTracingSampling`](/reference/kotlin/android/os/Debug#startMethodTracingSampling(kotlin.String,%20kotlin.Int,%20kotlin.Int)) to capture stack samples.\n\nYou can configure this profiling mode by adding another instrumentation\narguments:\n\n- `androidx.benchmark.profiling.sampleFrequency`\n\n - Number of stack samples to capture per second.\n - Argument type: integer\n - Defaults to 1000 samples per second.\n- `androidx.benchmark.profiling.sampleDurationSeconds`\n\n - Duration of benchmark to run.\n - Argument type: integer\n - Defaults to 5 seconds.\n- `androidx.benchmark.profiling.skipWhenDurationRisksAnr`\n\n - Skips method tracing when it's likely to cause an ANR. You should keep this enabled for CI runs, since ANRs can cause problems during long CI runs.\n - Argument type: boolean\n - Defaults to `true`\n\nNone\n\nThis argument doesn't capture a profiling file. Information about timing and\nallocations are still measured.\n\nRecommended for you\n\n- Note: link text is displayed when JavaScript is off\n- [Microbenchmark Instrumentation Arguments](/topic/performance/benchmarking/microbenchmark-instrumentation-args)\n- [Run benchmarks in Continuous Integration](/topic/performance/benchmarking/benchmarking-in-ci)"]]