แผนภูมิจากบนลงล่างและล่างขึ้นบน
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
แท็บจากบนลงล่างจะแสดงรายการการเรียกที่การขยายเมธอดหรือ
โหนดฟังก์ชันจะแสดงผู้ถูกเรียก รูปที่ 2 แสดงกราฟจากบนลงล่างสำหรับแผนภูมิการเรียกใช้ต่อไปนี้
ลูกศรแต่ละอันในกราฟจะชี้จากผู้โทรไปยังผู้รับสาย
รูปที่ 1 แผนภูมิการโทรตัวอย่างที่แสดง
เวลาของตัวเอง เวลาของลูก และเวลารวมสำหรับเมธอด D
ดังที่แสดงในรูปที่ 2 การขยายโหนดสำหรับเมธอด A ในแท็บจากบนลงล่าง
จะแสดงเมธอด B และ D ซึ่งเป็นเมธอดที่เรียกใช้ หลังจากนั้น การขยายโหนดสำหรับเมธอด
D จะแสดงผู้เรียกของเมธอดนั้น เช่น เมธอด B และ C คล้ายกับแท็บแผนภูมิเปลวไฟ ต้นไม้จากบนลงล่างจะรวบรวมข้อมูลการติดตามสำหรับเมธอดที่เหมือนกันซึ่งใช้สแต็กการเรียกเดียวกัน กล่าวคือ แท็บแผนภูมิเปลวไฟจะแสดงภาพกราฟิกของแท็บจากบนลงล่าง
แท็บจากบนลงล่างจะแสดงข้อมูลต่อไปนี้เพื่อช่วยอธิบายเวลา CPU
ที่ใช้ในการเรียกแต่ละครั้ง (เวลาจะแสดงเป็นเปอร์เซ็นต์ของเวลาทั้งหมดของ
เธรดในช่วงที่เลือกด้วย)
- ตนเอง: เวลาที่ใช้ในการเรียกใช้เมธอดหรือฟังก์ชันในการดำเนินการโค้ดของตัวเอง
และไม่ใช่โค้ดของผู้ที่ถูกเรียก ดังแสดงในรูปที่ 1 สำหรับเมธอด D
- บุตรหลาน: เวลาที่ใช้ในการเรียกใช้เมธอดหรือฟังก์ชันในการดำเนินการ
ผู้ถูกเรียกและไม่ใช่โค้ดของตัวเอง ดังแสดงในรูปที่ 1 สำหรับเมธอด D
- ทั้งหมด: ผลรวมของเวลาตนเองและบุตรหลานของวิธีการ ซึ่ง
แสดงถึงเวลาทั้งหมดที่แอปใช้ในการดำเนินการโทร ตามที่แสดงใน
รูปที่ 1 สำหรับวิธี D
รูปที่ 2 แผนผังจากบนลงล่าง
รูปที่ 3 แผนผังจากล่างขึ้นบนสำหรับเมธอด C จาก
รูปที่ 5
แท็บจากล่างขึ้นบนจะแสดงรายการการเรียกที่การขยายฟังก์ชันหรือ
โหนดของเมธอดจะแสดงผู้เรียก การใช้ตัวอย่างการติดตามที่แสดงในรูปที่ 2
รูปที่ 3 จะแสดงแผนผังจากล่างขึ้นบนสำหรับเมธอด C การเปิดโหนดสำหรับเมธอด C
ในแผนภูมิด้านล่างขึ้นบนจะแสดงผู้เรียกที่ไม่ซ้ำกันแต่ละราย ซึ่งก็คือเมธอด B และ D โปรดทราบ
ว่าแม้ B จะเรียก C 2 ครั้ง แต่ B จะปรากฏเพียงครั้งเดียวเมื่อขยายโหนดสำหรับ
เมธอด C ในแผนผังจากล่างขึ้นบน หลังจากนั้น การขยายโหนดสำหรับ B จะแสดง
ผู้โทรของโหนด ซึ่งก็คือเมธอด A และ D
แท็บจากล่างขึ้นบนมีประโยชน์ในการจัดเรียงเมธอดหรือฟังก์ชันตามรายการที่ใช้เวลา CPU มากที่สุด (หรือน้อยที่สุด)
คุณสามารถตรวจสอบแต่ละโหนดเพื่อระบุ
ผู้เรียกที่ใช้เวลา CPU มากที่สุดในการเรียกใช้เมธอดหรือฟังก์ชันเหล่านั้น
เมื่อเทียบกับโครงสร้างแบบบนลงล่าง ข้อมูลเวลาสำหรับแต่ละเมธอดหรือฟังก์ชันในโครงสร้างแบบล่างขึ้นบนจะอ้างอิงถึงเมธอดที่ด้านบนของแต่ละโครงสร้าง (โหนดบนสุด)
เวลา CPU ยังแสดงเป็นเปอร์เซ็นต์ของเวลาทั้งหมดของเธรดในระหว่างการบันทึกนั้นด้วย
ตารางต่อไปนี้ช่วยอธิบายวิธีตีความข้อมูลเวลา
สำหรับโหนดบนสุดและผู้เรียก (โหนดย่อย)
|
ตนเอง |
เด็ก |
รวม |
วิธีการหรือฟังก์ชันที่ด้านบนของแผนผังจากล่างขึ้นบน (โหนดบนสุด) |
แสดงเวลาทั้งหมดที่เมธอดหรือฟังก์ชันใช้ในการเรียกใช้
โค้ดของตัวเอง ไม่ใช่โค้ดของผู้ที่เรียกใช้ เมื่อเทียบกับแผนภูมิต้นทาง
ข้อมูลการจับเวลานี้แสดงถึงผลรวมของการเรียกทั้งหมดไปยังเมธอดหรือฟังก์ชันนี้
ตลอดระยะเวลาการบันทึก
|
แสดงเวลาทั้งหมดที่เมธอดหรือฟังก์ชันใช้ในการเรียกใช้
ผู้ถูกเรียกและไม่ใช่โค้ดของตัวเอง เมื่อเทียบกับแผนภูมิต้นไม้จากบนลงล่าง
ข้อมูลการจับเวลานี้แสดงถึงผลรวมของการเรียกทั้งหมดไปยัง
วิธีการหรือฟังก์ชันที่เรียกใช้ในช่วงระยะเวลาของการบันทึก
|
ผลรวมของเวลาของฟังก์ชันเองและเวลาของฟังก์ชันย่อย
|
ผู้โทร (โหนดย่อย) |
แสดงเวลาที่ใช้ด้วยตนเองทั้งหมดของผู้ถูกเรียกเมื่อผู้เรียกเรียก
การใช้แผนผังจากล่างขึ้นบนในรูปที่ 6 เป็นตัวอย่าง
เวลาของเมธอด B จะเท่ากับผลรวมของเวลาของเมธอดเอง
สำหรับการดำเนินการแต่ละครั้งของเมธอด C เมื่อ B เรียกใช้
|
แสดงเวลารวมของบุตรหลานของผู้รับสายเมื่อผู้โทรเรียกใช้
การใช้แผนผังจากล่างขึ้นบนในรูปที่ 6 เป็นตัวอย่าง
เวลาของบุตรหลานสำหรับเมธอด B จะเท่ากับผลรวมของ
เวลาของบุตรหลานสำหรับการดำเนินการแต่ละครั้งของเมธอด C เมื่อเรียกใช้โดย B
|
ผลรวมของเวลาของฟังก์ชันเองและเวลาของฟังก์ชันย่อย
|
หมายเหตุ: สำหรับการบันทึกที่กำหนด Android Studio จะหยุดรวบรวมข้อมูลใหม่
เมื่อโปรไฟล์เลอร์ถึงขีดจำกัดขนาดไฟล์ (แต่การดำเนินการนี้จะไม่หยุด
การบันทึก) โดยปกติแล้ว การดำเนินการนี้จะเกิดขึ้นเร็วกว่ามากเมื่อทำการติดตามที่มีการวัดประสิทธิภาพ เนื่องจากประเภทการติดตามนี้จะรวบรวมข้อมูลได้มากกว่าในเวลาที่สั้นกว่าเมื่อเทียบกับการติดตามแบบสุ่มตัวอย่าง หากคุณขยายเวลาการตรวจสอบเป็น
ระยะเวลาของการบันทึกที่เกิดขึ้นหลังจากถึงขีดจำกัด ข้อมูลเวลาใน
แผงการติดตามจะไม่เปลี่ยนแปลง (เนื่องจากไม่มีข้อมูลใหม่) นอกจากนี้
แผงการติดตามจะแสดง NaN สำหรับข้อมูลการจับเวลาเมื่อคุณเลือกเฉพาะ
ส่วนของการบันทึกที่ไม่มีข้อมูล
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-07-27 UTC
[[["เข้าใจง่าย","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 UTC"],[],[],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."]]