تتبُّع المقطوعة الموسيقية

غالبًا ما تكون عمليات التتبّع هي أفضل مصدر للمعلومات عند النظر في مشكلة تتعلّق بالأداء لأول مرة. وتسمح لك بصياغة فرضية عن المشكلة وتحديد مكان البدء في البحث.

هناك مستويان لتتبُّع العمليات متوافقان مع Android: تتبُّع النظام وتتبُّع الطريقة.

وبما أنّ تتبُّع النظام لا يتتبّع سوى المناطق التي تم وضع علامة عليها تحديدًا للتتبُّع، فإنّه يستهلك موارد منخفضة ولا يؤثر في أداء تطبيقك بشكل كبير. إنّ تتبُّع النظام يُعدّ أمرًا رائعًا لمعرفة الوقت الذي يستغرقه تنفيذ أقسام معيّنة من الرمز البرمجي.

تتبع طريقة التتبع كل استدعاء وظيفة في تطبيقك. وهذا مكلف للغاية، لذا فهو يؤثر بشكل كبير على أداء التطبيق، لكنه يمنحك صورةً شاملةً لما يحدث، والدوال التي يتم استدعاؤها، وعدد مرات استدعائها.

بشكلٍ تلقائي، لا تتضمّن عمليات تتبُّع النظام وظائف فردية قابلة للتجميع. وهي متاحة في عمليات تتبُّع الطرق.

نختبر حاليًا وظيفة تتبُّع جديدة للنظام لعرض وظائف قابلة للتجميع داخل عمليات تتبُّع النظام. يوفّر لك هذا الإجراء مستوى منخفضًا من التداخل مع عملية التتبّع في النظام، مع مستويات من التفاصيل في التركيب توفّرها عملية تتبّع الطريقة.

الإعداد لتتبُّع التركيب

لتجربة ميزة تتبُّع إعادة التركيب في مشروعك، عليك التحديث إلى الإصدارات التالية على الأقل:

  • Android Studio Flamingo
  • واجهة مستخدم الإنشاء: 1.3.0
  • برنامج تجميع Compose: 1.3.0

يجب أن يكون الجهاز أو المحاكي الذي يتم تشغيل التتبع عليه أيضًا عند مستوى واجهة برمجة التطبيقات الأدنى 30.

بالإضافة إلى ذلك، عليك إضافة تبعية جديدة لميزة "تتبُّع مدة التشغيل" في Compose:

implementation("androidx.compose.runtime:runtime-tracing:1.0.0-beta01")

باستخدام هذا الاعتماد، عند تتبُّع النظام الذي يتضمّن إعادة التركيب، يمكنك الاطّلاع على الدوالّ القابلة للتجميع تلقائيًا.

تتبُّع النظام

لإجراء عملية تتبُّع للنظام والاطّلاع على عملية تتبُّع إعادة التركيب الجديدة، اتّبِع الخطوات التالية:

  1. فتح المحلِّل:

    Android Studio - بدء ميزة "التحليل"
    الشكل 2: Android Studio - بدء تحليل الأداء
  2. انقر على المخطط الزمني لوحدة المعالجة المركزية (CPU).

    محلّل استوديو Android - المخطط الزمني لوحدة المعالجة المركزية (CPU)
    الشكل 3: أداة تحليل الأداء في Android Studio - المخطط الزمني لوحدة المعالجة المركزية (CPU)
  3. انتقِل إلى تطبيقك إلى واجهة المستخدم التي تريد تتبُّعها، ثم اختَر تتبُّع النظام والتسجيل.

    خيارات التتبُّع - تتبُّع النظام
    الشكل 4: خيارات التتبُّع - تتبُّع النظام
  4. استخدِم تطبيقك لإعادة التركيب وإيقاف التسجيل. بعد معالجة آثار الرصد وظهورها، من المفترض أن يكون بإمكانك الآن رؤية العناصر القابلة للإنشاء في سجلّ تتبُّع إعادة التركيب. يمكنك استخدام لوحة المفاتيح والماوس للتكبير أو التصغير والعرض الشامل لتتبُّع آثار الأنشطة. وإذا لم تكن معتادًا على تتبُّع آثار الأنشطة، راجِع مستندات تسجيل آثار الأنشطة.

    تتبُّع النظام
    الشكل 5. تتبُّع النظام

    يؤدي النقر مرّتين على عنصر قابل للإنشاء في الرسم البياني إلى نقلك إلى رمز المصدر الخاص به.

  5. يمكنك أيضًا الاطّلاع على العناصر القابلة للتجميع في مخطّط Flame Chart مع رقم الملف والخط:

    رسم بياني مفصَّل
    الشكل 6: الرسم البياني المفصّل لأداء الرموز

المحاذير

حجم حزمة APK غير الضروري

على الرغم من أنّنا سعينا إلى تقليل وقت استجابة الميزة قدر الإمكان، يحدث زيادة في حجم حِزم APK لتطبيقات Compose بسبب سلاسل التتبّع المضمّنة في حِزم APK بواسطة مُجمِّع Compose. وقد تكون هذه الزيادة في الحجم صغيرة نسبيًا إذا كان تطبيقك لا يستخدم قدرًا كبيرًا من ميزة Compose أو أكبر مع تطبيقات Compose الكاملة. بالإضافة إلى ذلك، لا يتم تشويش سلاسل التتبّع هذه حتى تظهر في أدوات التتبّع، كما هو موضّح سابقًا. ويُدخل مُجمِّع Compose هذه العناصر في كل التطبيقات، بدءًا من الإصدار 1.3.0.

يمكن إزالة سلاسل التتبُّع في إصدار الإصدار عن طريق إضافة قاعدة proguard التالية:

-assumenosideeffects public class androidx.compose.runtime.ComposerKt {

   boolean isTraceInProgress();

   void traceEventStart(int,int,int,java.lang.String);

   void traceEventStart(int,java.lang.String);

   void traceEventEnd();

}

قد تتغير هذه الدوالّ في المستقبل، ولكن سيتم ذكر أي تغييرات في ملاحظات الإصدار الخاصة بتطبيق "الإنشاء".

يُرجى العِلم أنّ إبقاء هذه البيانات ضمن الملف الشخصي يضمن أنّ حزمة APK التي يتم تحليلها هي نفسها التي يشغّلها مستخدمو التطبيق، وذلك مع التسبّب في بعض التكاليف المرتبطة بحجم حزمة APK.

التوقيت الدقيق

للحصول على ملف تعريف دقيق، كما هو الحال مع أي اختبار أداء، عليك إجراء profileable وnon-debuggable في التطبيق وفقًا للتطبيقات التي يمكن إنشاء ملف تعريف لها.

تسجيل تتبع من المحطة الطرفية

يمكن التقاط أثر التركيب من الطرف. ولإجراء ذلك، عليك تنفيذ الخطوات التي يؤديها "استوديو Android" تلقائيًا بالنيابة عنك.

إضافة التبعيات

أولاً، أضف التبعيات الإضافية إلى تطبيقك.

implementation("androidx.tracing:tracing-perfetto:1.0.0")
implementation("androidx.tracing:tracing-perfetto-binary:1.0.0")

إنشاء طلب تسجيل

  1. أنشئ أمر تسجيل باستخدام Perfetto.
  2. أضِف يدويًا قسم مصدر البيانات track_event وفقًا للمثال التالي:

    adb shell perfetto \
      -c - --txt \
      -o /data/misc/perfetto-traces/trace \
    <<EOF
    buffers: {
        size_kb: 63488
        fill_policy: RING_BUFFER
    }
    buffers: {
        size_kb: 2048
        fill_policy: RING_BUFFER
    }
    data_sources: {
        config {
            name: "track_event"
        }
    }
    duration_ms: 10000
    flush_period_ms: 30000
    incremental_state_config {
        clear_period_ms: 5000
    }
    EOF

تسجيل تتبع

  1. افتح التطبيق وحضِّر القسم الذي تريد تتبُّعه.
  2. فعِّل ميزة التتبُّع في التطبيق من خلال إصدار بث.

    # set app package variable, e.g. com.google.samples.apps.nowinandroid.debug
    # can be found through `adb shell ps -ef` or `adb shell cmd package list packages`
    package=<your app process>
    
    # issue a broadcast to enable tracing
    adb shell am broadcast \
    -a androidx.tracing.perfetto.action.ENABLE_TRACING \
    $package/androidx.tracing.perfetto.TracingReceiver
    
  3. ابدأ أمر التسجيل الذي أنشأته سابقًا.

افتح عملية التتبُّع.

  1. adb pull <location> التتبُّع من الجهاز (الموقع الجغرافي المحدّد في الأمر record)

  2. افتح في Perfetto.

تسجيل تتبع باستخدام أداة Jetpack Macrobenchmark

يمكنك قياس الأداء باستخدام Jetpack Macrobenchmark، الذي يقدّم عمليات التتبّع كنتائج. لتمكين تتبع التركيبة باستخدام مقاييس الأداء الكلية، يلزمك:

  1. أضِف هذه التبعيات الإضافية إلى وحدة اختبار Macrobenchmark:

    implementation("androidx.tracing:tracing-perfetto:1.0.0")
    implementation("androidx.tracing:tracing-perfetto-binary:1.0.0")
    
  2. أضِف androidx.benchmark.fullTracing.enable=true مَعلمة أداة القياس قبل إجراء اختبارات الأداء. اطّلِع على مَعلمات أداة قياس الأداء على مستوى التطبيق للحصول على مزيد من المعلومات عن مَعلمات أداة قياس الأداء على مستوى التطبيق.

ملاحظات

يسرّنا معرفة ملاحظاتك حول هذه الميزة وأي أخطاء تواجهها فيها، وأي طلبات لديك. يمكنك إرسال الملاحظات إلينا من خلال أداة تتبُّع المشاكل.