الرسوم البيانية من الأعلى للأسفل والأسفل
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
تعرض علامة التبويب من الأعلى إلى الأسفل قائمة بالمكالمات التي يؤدي فيها توسيع عقدة طريقة أو دالة إلى عرض العناصر التي تم استدعاؤها. يعرض الشكل 2 رسمًا بيانيًا من الأعلى إلى الأسفل لمخطط الاتصال التالي. يشير كل سهم في الرسم البياني من المتصل إلى المتلقّي.
الشكل 1. مثال على رسم بياني للمكالمات يوضّح الوقت المستغرق في التنفيذ الذاتي والوقت المستغرق في تنفيذ الدوال الفرعية وإجمالي الوقت المستغرق في تنفيذ الدالة D
كما هو موضّح في الشكل 2، يؤدي توسيع العقدة الخاصة بالطريقة A في علامة التبويب من الأعلى إلى الأسفل إلى عرض الطرق التي يتم استدعاؤها، أي الطريقتَين B وD. بعد ذلك، يؤدي توسيع العقدة الخاصة بالطريقة D إلى عرض الطرق التي تستدعيها، مثل الطريقتين B وC. على غرار علامة التبويب الرسم البياني الشعلة، يجمع الرسم البياني الشجري من أعلى إلى أسفل معلومات التتبُّع للطُرق المتطابقة التي تشترك في حزمة استدعاء الدوال البرمجية نفسها. أي أنّ علامة التبويب مخطط اللهب تقدّم تمثيلاً رسوميًا لعلامة التبويب من الأعلى إلى الأسفل.
تقدّم علامة التبويب من الأعلى إلى الأسفل المعلومات التالية للمساعدة في وصف وقت وحدة المعالجة المركزية المستغرَق في كل عملية استدعاء (يتم أيضًا تمثيل الأوقات كنسبة مئوية من إجمالي وقت سلسلة التنفيذ خلال النطاق الزمني المحدّد):
- الوقت الذاتي: هو الوقت الذي استغرقه استدعاء الطريقة أو الدالة في تنفيذ الرمز الخاص بهما
وليس الرمز الخاص بالدوال أو الطرق التي تم استدعاؤها، كما هو موضّح في الشكل 1 للطريقة D.
- الأطفال: الوقت الذي استغرقه استدعاء الطريقة أو الدالة في تنفيذ الدوال التي تم استدعاؤها وليس الرمز الخاص بها، كما هو موضّح في الشكل 1 للطريقة D.
- الإجمالي: مجموع وقت الكيان نفسه والعناصر الثانوية للطريقة يمثّل هذا
إجمالي الوقت الذي استغرقه التطبيق في تنفيذ مكالمة، كما هو موضّح في
الشكل 1 للطريقة D.
الشكل 2. شجرة من الأعلى إلى الأسفل
الشكل 3. شجرة من الأسفل إلى الأعلى للطريقة C من الشكل 5
تعرِض علامة التبويب من الأسفل إلى الأعلى قائمة بالمكالمات التي يؤدي فيها توسيع عقدة دالة أو طريقة إلى عرض المتصلين بها. باستخدام مثال التتبُّع الموضّح في "الشكل 2"، يقدّم "الشكل 3" شجرة من الأسفل إلى الأعلى للطريقة C. يؤدي فتح العقدة الخاصة بالطريقة C
في شجرة التنفيذ من الأسفل إلى الأعلى إلى عرض كل من الدوال الفريدة التي تستدعيها، وهما الطريقتان B وD. يُرجى العِلم أنّه على الرغم من أنّ B يستدعي C مرّتين، لا يظهر B إلا مرّة واحدة عند توسيع العقدة الخاصة بالطريقة C في شجرة التنفيذ من الأسفل إلى الأعلى. بعد ذلك، يؤدي توسيع العقدة الخاصة بـ B إلى عرض المتصل بها والطريقتين A وD.
يفيد علامة التبويب من الأسفل إلى الأعلى في ترتيب الطرق أو الدوال حسب تلك التي تستهلك أكبر (أو أقل) وقت لوحدة المعالجة المركزية. يمكنك فحص كل عقدة لتحديد الجهات التي تستغرق أكبر وقت لوحدة المعالجة المركزية في استدعاء هذه الطرق أو الدوال.
مقارنةً بالشجرة التنازلية، تكون معلومات التوقيت لكل طريقة أو دالة في الشجرة التصاعدية مرتبطة بالطريقة في أعلى كل شجرة (العقدة العليا).
يتم أيضًا تمثيل وقت وحدة المعالجة المركزية كنسبة مئوية من إجمالي وقت سلسلة التعليمات أثناء عملية التسجيل هذه. يساعد الجدول التالي في توضيح كيفية تفسير معلومات التوقيت الخاصة بالعقدة العليا والعقد الفرعية التي تستدعيها.
|
نفسي |
الأطفال |
المجموع |
الطريقة أو الدالة في أعلى شجرة التنفيذ من الأسفل إلى الأعلى (العقدة العليا) |
تمثّل هذه السمة إجمالي الوقت الذي استغرقه تنفيذ الطريقة أو الدالة للتعليمات البرمجية الخاصة بهما، وليس التعليمات البرمجية الخاصة بالدوال التي تم استدعاؤها. مقارنةً بالشجرة التنازلية، تمثّل معلومات التوقيت هذه مجموع كل عمليات استدعاء هذه الطريقة أو الدالة على مدار مدة التسجيل.
|
تمثّل إجمالي الوقت الذي استغرقه تنفيذ الطريقة أو الدالة
للدوال التي تم استدعاؤها وليس للتعليمات البرمجية الخاصة بها. مقارنةً بالشجرة من أعلى إلى أسفل، تمثّل معلومات التوقيت هذه مجموع جميع طلبات الاستدعاء إلى هذه الطريقة أو الدوال التي تم استدعاؤها خلال مدة التسجيل.
|
مجموع وقت التنفيذ الذاتي ووقت التنفيذ الثانوي
|
المتصلون (العُقد الفرعية) |
تمثّل هذه السمة إجمالي وقت التنفيذ الذاتي للدالة التي يتم استدعاؤها من خلال الدالة المستدعِية. باستخدام شجرة من الأسفل إلى الأعلى في الشكل 6 كمثال، سيكون وقت التنفيذ الذاتي للطريقة B مساويًا لمجموع أوقات التنفيذ الذاتي لكل عملية تنفيذ للطريقة C عند استدعائها بواسطة B.
|
تمثّل هذه السمة إجمالي وقت الأطفال الذي استغرقه المتلقّي عندما استدعاه المتصل. باستخدام شجرة التنفيذ من الأسفل إلى الأعلى في الشكل 6 كمثال، سيكون وقت تنفيذ التوابع الفرعية للطريقة B مساويًا لمجموع أوقات تنفيذ التوابع الفرعية لكل عملية تنفيذ للطريقة C عند استدعائها من خلال B.
|
مجموع وقت التنفيذ الذاتي ووقت التنفيذ الثانوي
|
ملاحظة: بالنسبة إلى عملية تسجيل معيّنة، يتوقف Android Studio عن جمع بيانات جديدة عندما يصل محلّل الأداء إلى الحد الأقصى لحجم الملف (ولكن هذا لا يوقف عملية التسجيل). يحدث ذلك عادةً بشكل أسرع بكثير عند تنفيذ عمليات تتبُّع مزوَّدة بأدوات، لأنّ هذا النوع من التتبُّع يجمع المزيد من البيانات في وقت أقصر مقارنةً بعملية تتبُّع مستندة إلى عيّنات. في حال تمديد وقت الفحص إلى فترة التسجيل التي حدثت بعد الوصول إلى الحدّ الأقصى، لن تتغيّر بيانات التوقيت في لوحة التتبُّع (لأنّه لا تتوفّر أي بيانات جديدة). بالإضافة إلى ذلك، تعرض لوحة التتبُّع القيمة NaN لمعلومات التوقيت عند اختيار جزء من التسجيل لا تتوفّر فيه بيانات.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-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-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Top down and bottom up charts\n\nThe **Top Down** tab displays a list of calls in which expanding a method or\nfunction node displays its callees. Figure 2 shows a top down graph for the\nfollowing call chart. Each arrow in the graph points from a caller to a callee.\n\n\n**Figure 1.** An example call chart that illustrates\nself, children, and total time for method D.\n\n\u003cbr /\u003e\n\nAs shown in Figure 2, expanding the node for method A in the **Top Down** tab\ndisplays its callees, methods B and D. After that, expanding the node for method\nD exposes its callees, such as methods B and C. Similar to the\n[**Flame chart**](/studio/profile/chart-glossary/flame-chart) tab, the top down\ntree aggregates trace information for identical methods that share the same call\nstack. That is, the **Flame chart** tab provides a graphical representation of\nthe **Top Down** tab.\n\nThe **Top Down** tab provides the following information to help describe CPU\ntime spent on each call (times are also represented as a percentage of the\nthread's total time over the selected range):\n\n- **Self:** the time the method or function call spent executing its own code and not that of its callees, as illustrated in Figure 1 for method D.\n- **Children:** the time the method or function call spent executing its callees and not its own code, as illustrated in Figure 1 for method D.\n- **Total:** the sum of the method's **Self** and **Children** time. This represents the total time the app spent executing a call, as illustrated in Figure 1 for method D.\n\n**Figure 2.** A Top Down tree.\n\n\u003cbr /\u003e\n\n**Figure 3.** A Bottom Up tree for method C from\nFigure 5.\n\n\u003cbr /\u003e\n\nThe **Bottom Up** tab displays a list of calls in which expanding a function or\nmethod's node displays its callers. Using the example trace shown in Figure 2,\nfigure 3 provides a bottom up tree for method C. Opening the node for method C\nin the bottom up tree displays each of its unique callers, methods B and D. Note\nthat, although B calls C twice, B appears only once when expanding the node for\nmethod C in the bottom up tree. After that, expanding the node for B displays\nits caller, methods A and D.\n\nThe **Bottom Up** tab is useful for sorting methods or functions by those that\nconsume the most (or least) CPU time. You can inspect each node to determine\nwhich callers spend the most CPU time invoking those methods or functions.\nCompared to the top down tree, timing info for each method or function in a\nbottom up tree is in reference to the method at the top of each tree (top node).\nCPU time is also represented as a percentage of the thread's total time during\nthat recording. The following table helps explain how to interpret timing\ninformation for the top node and its callers (sub-nodes).\n\n| | Self | Children | Total |\n| Method or function at the top of the bottom up tree (top node) | Represents the total time the method or function spent executing its own code and not that of its callees. Compared to the top down tree, this timing information represents a sum of all calls to this method or function over the duration of the recording. | Represents the total time the method or function spent executing its callees and not its own code. Compared to the top down tree, this timing information represents the sum of all calls to this method or function's callees over the duration of the recording. | The sum of the self time and children time. |\n| Callers (sub-nodes) | Represents the total self time of the callee when being called by the caller. Using the bottom up tree in Figure 6 as an example, the self time for method B would equal the sum of the self times for each execution of method C when called by B. | Represents the total children time of the callee when being invoked by the caller. Using the bottom up tree in Figure 6 as an example, the children time for method B would equal the sum of the children times for each execution of method C when called by B. | The sum of the self time and children time. |\n|----------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------|\n\n\n**Note:** For a given recording, Android Studio stops collecting new data\nwhen the profiler reaches the file size limit (however, this does not stop the\nrecording). This typically happens much more quickly when performing\ninstrumented traces because this type of tracing collects more data in a shorter\ntime, compared to a sampled trace. If you extend the inspection time into a\nperiod of the recording that occurred after reaching the limit, timing data in\nthe trace pane does not change (because no new data is available). Additionally,\nthe trace pane displays **NaN** for timing information when you select only\nthe portion of a recording that has no data available."]]