בכרטיסייה מלמעלה למטה מוצגת רשימה של קריאות. כשמרחיבים צומת של שיטה או פונקציה, מוצגות הפונקציות שנקראו. איור 2 מציג תרשים מלמעלה למטה של תרשים השיחות הבא. כל חץ בתרשים מצביע מהמתקשר אל מקבל השיחה.
איור 1. תרשים לדוגמה של שיחות שממחיש את הזמן של עצמו, של הילדים והזמן הכולל של שיטה D.
כפי שמוצג באיור 2, הרחבת הצומת של שיטה א' בכרטיסייה מלמעלה למטה מציגה את השיטות שהיא קוראת להן, שיטה ב' ושיטה ד'. אחרי זה, כשמרחיבים את הצומת של שיטה D, נחשפות השיטות שהיא קוראת להן, כמו שיטות B ו-C. בדומה לכרטיסייה תרשים הלהבה, העץ מלמעלה למטה צובר מידע על מעקב עבור שיטות זהות שמשתפות את אותו מחסנית קריאות. כלומר, בכרטיסייה תרשים להבה מוצג ייצוג גרפי של הכרטיסייה מלמעלה למטה.
בכרטיסייה מלמעלה למטה מופיעים הפרטים הבאים שיעזרו לכם להבין את הזמן שמעבד המחשב השקיע בכל שיחה (הזמנים מוצגים גם כאחוז מהזמן הכולל של השרשור בטווח שנבחר):
- Self: הזמן שחלף במהלך ההפעלה של הקוד של השיטה או של הקריאה לפונקציה, ולא של הקוד של הפונקציות שהיא קוראת להן, כמו שמוצג באיור 1 לגבי השיטה D.
- ילדים: הזמן שחלף מהרגע שבו הופעלה הפונקציה או ה-method עד שהסתיימה ההרצה של הפונקציות או ה-method שהיא קראה להן, ולא של הקוד שלה עצמה, כמו שמוצג באיור 1 לגבי method D.
- סה"כ: סכום הזמן שמופיע בקטגוריות אני וילדים של אמצעי התשלום. הערך הזה מייצג את משך הזמן הכולל שהאפליקציה השקיעה בהפעלת שיחה, כמו שמוצג באיור 1 לגבי שיטה D.

איור 2. עץ מלמעלה למטה.

איור 3. עץ מלמטה למעלה של שיטה C מתוך איור 5.
בכרטיסייה Bottom Up מוצגת רשימה של שיחות. אם מרחיבים את הצומת של פונקציה או שיטה, מוצגים המתקשרים. בדוגמה של המעקב שמוצגת באיור 2, באיור 3 מוצג עץ מלמטה למעלה של שיטה C. כשפותחים את הצומת של שיטה C בעץ מלמטה למעלה, מוצגים כל המתקשרים הייחודיים שלה, שיטות B ו-D. הערה: למרות ש-B קורא ל-C פעמיים, B מופיע רק פעם אחת כשמרחיבים את הצומת של השיטה C בעץ מלמטה למעלה. אחרי כן, הרחבת הצומת של B מציגה את המתקשר שלו, שיטות A ו-D.
הכרטיסייה Bottom Up שימושית למיון שיטות או פונקציות לפי אלה שצורכות את הזמן הכי ארוך (או הכי קצר) של מעבד. אפשר לבדוק כל צומת כדי לדעת אילו קבצים קוראים מבזבזים הכי הרבה זמן CPU בהפעלת השיטות או הפונקציות האלה. בהשוואה לעץ מלמעלה למטה, נתוני התזמון של כל שיטה או פונקציה בעץ מלמטה למעלה מתייחסים לשיטה בחלק העליון של כל עץ (הצומת העליון). זמן השימוש במעבד מוצג גם כאחוז מהזמן הכולל של השרשור במהלך ההקלטה. הטבלה הבאה מסבירה איך לפרש את נתוני התזמון של הצומת העליון והקריאות שלו (צמתי משנה).
עצמי | ילדים | סה"כ | |
---|---|---|---|
ה-method או הפונקציה בראש העץ מלמטה למעלה (הצומת העליון) | מייצג את הזמן הכולל שה-method או הפונקציה השקיעו בהרצת הקוד שלהן, ולא של הפונקציות שהן קוראות להן. בהשוואה לעץ מלמעלה למטה, נתוני התזמון האלה מייצגים סכום של כל הקריאות לשיטה או לפונקציה הזו במהלך ההקלטה. | מייצג את הזמן הכולל שהוקצה לביצוע של ה-method או הפונקציה, כולל הפונקציות שהיא קוראת להן ולא הקוד שלה. בהשוואה לעץ מלמעלה למטה, מידע התזמון הזה מייצג את סכום כל הקריאות לשיטה או לפונקציה הזו במשך משך ההקלטה. | סכום הזמן שלכם ושל הילדים. |
מתקשרים (צמתי משנה) | מייצג את הזמן הכולל של הפונקציה שנקראה בזמן שהמתקשר קרא לה. בדוגמה של עץ מלמטה למעלה באיור 6, הזמן העצמי של שיטה B יהיה שווה לסכום הזמנים העצמיים של כל הרצה של שיטה C כשמפעילים אותה מ-B. | מייצג את משך הזמן הכולל של הילדים של מקבל השיחה בזמן שהשיחה מתבצעת על ידי המתקשר. אם משתמשים בעץ מלמטה למעלה באיור 6 כדוגמה, זמן הצאצא של שיטה B יהיה שווה לסכום של זמני הצאצא של כל הרצה של שיטה C כשקוראים לה מ-B. | סכום הזמן שלכם ושל הילדים. |
הערה: כשפרופילר מגיע למגבלת גודל הקובץ של הקלטה מסוימת, הוא מפסיק לאסוף נתונים חדשים (אבל ההקלטה לא מפסיקה). בדרך כלל זה קורה הרבה יותר מהר כשמבצעים מעקב עם מכשור, כי סוג המעקב הזה אוסף יותר נתונים בזמן קצר יותר, בהשוואה למעקב עם דגימה. אם מאריכים את זמן הבדיקה לתקופה של ההקלטה שהתרחשה אחרי שהגעתם למגבלה, נתוני התזמון בחלונית המעקב לא משתנים (כי אין נתונים חדשים). בנוסף, אם בוחרים רק את החלק בהקלטה שאין בו נתונים, בחלונית המעקב מוצג NaN בנתוני התזמון.