You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Open the [Activity Tabs Demo](https://microsoftedge.github.io/Demos/devtools-performance-activitytabs/) webpage in a new window or tab. The _activity tabs_ are the **Bottom-up**, **Call tree**, and **Event log** tabs at the bottom of the **Performance** tool. These tabs display root activities.
706
-
707
-
<!-- upstream doc:
708
-
You can view the source files for the Activity Tabs Demo in the [MicrosoftEdge/Demos > devtools-performance-activitytabs](https://github.com/MicrosoftEdge/Demos/tree/main/devtools-performance-activitytabs) repo folder. -->
700
+
Here's an explanation of the root activities concept that's mentioned in the **Call Tree** tab, **Bottom-Up** tab, and **Event Log** sections.
709
701
710
702
_Root activities_ are activities that cause the browser to do some work. For example, when you click a webpage, the browser runs an `Event` activity as the root activity. That `Event` activity may cause other activities to run, such as a handler.
711
703
@@ -714,48 +706,16 @@ In the flame chart of the **Main** section, root activities are at the top of th
714
706
For an example of root activities, see [The Call tree tab](#the-call-tree-tab), below.
To learn how to select a portion of a recording, see [Select a portion of a recording](#select-a-portion-of-a-recording), above.
739
-
740
-
In the **Main** section flame chart of the previous figure, almost all of the time was spent running the `a`, `b`, and `c` functions. The top activities in the **Bottom-up** tab of the previous figure are also `a`, `b`, and `c`. In the **Bottom-up** tab, the next most expensive activity is `Minor GC`.
741
-
742
-
The **Self Time** column represents the aggregated time spent directly in that activity, across all of the occurrences.
743
-
744
-
The **Total Time** column represents aggregated time spent in that activity or any of the children.
745
-
746
-
709
+
<!-- matches upstream section order -->
747
710
<!-- ---------- -->
748
711
###### The Call tree tab
749
712
750
-
Open the [Activity Tabs Demo](https://microsoftedge.github.io/Demos/devtools-performance-activitytabs/) webpage in a new window or tab.
751
-
752
713
Use the **Call tree** tab to view which [root activities](#root-activities) cause the most work.
753
714
754
-
The **Call tree** tab only displays activities during the selected portion of the recording:
715
+
The **Call tree** tab only displays activities during the selected portion of the recording. To learn how to select a portion of a recording, see [Select a portion of a recording](#select-a-portion-of-a-recording), above.
755
716
756
717

757
-
758
-
To learn how to select a portion of a recording, see [Select a portion of a recording](#select-a-portion-of-a-recording), above.
In the previous figure, the top-level items in the **Activity** column, such as `Event Timing`, are root activities. The nesting represents the call stack. For example, in the previous figure, `Event Timing` caused `Event: mouseup`, which caused `Function Call`, which cause `(anonymous)`, and so on.
761
721
@@ -770,18 +730,33 @@ By default the **Grouping** menu is set to **No Grouping**. Use the **Grouping*
770
730
Click **Show Heaviest Stack** () to reveal another table to the right of the **Activity** table. Click on an activity to populate the **Heaviest Stack** table. The **Heaviest Stack** table displays which children of the selected activity took the longest time to run.
771
731
772
732
733
+
<!-- ---------- -->
734
+
###### The Bottom-up tab
735
+
736
+
Use the **Bottom-up** tab to view which activities directly took up the most time in aggregate.
737
+
738
+
The **Bottom-up** tab only displays activities during the selected portion of the recording. To learn how to select a portion of a recording, see [Select a portion of a recording](#select-a-portion-of-a-recording), above.
In the **Main** section flame chart of the previous figure, almost all of the time was spent running the `a`, `b`, and `c` functions. The top activities in the **Bottom-up** tab of the previous figure are also `a`, `b`, and `c`. In the **Bottom-up** tab, the next most expensive activity is `Minor GC`.
744
+
745
+
The **Self Time** column represents the aggregated time spent directly in that activity, across all of the occurrences.
746
+
747
+
The **Total Time** column represents aggregated time spent in that activity or any of the children.
748
+
749
+
773
750
<!-- ---------- -->
774
751
###### The Event log tab
775
752
776
753
Use the **Event log** tab to view activities in the order in which they occurred during the recording.
777
754
778
-
The **Event log** tab only displays activities during the selected portion of the recording:
755
+
The **Event log** tab only displays activities during the selected portion of the recording. To learn how to select a portion of a recording, see [Select a portion of a recording](#select-a-portion-of-a-recording), above.
To learn how to select a portion of a recording, see [Select a portion of a recording](#select-a-portion-of-a-recording), above.
783
-
784
-
The **Start Time** column represents the point at which that activity started, relative to the start of the recording. For example, the start time of `175.7 ms` for the selected item in the previous figure means that activity started 175.7 ms after the recording started.
759
+
The **Start Time** column represents the point at which that activity started, relative to the start of the recording. For example, the start time of `925.0 ms` for the selected item in the previous figure means that activity started 925.0 ms after the recording started.
785
760
786
761
The **Self Time** column represents the time spent directly in that activity.
787
762
@@ -808,19 +783,20 @@ In an overlay with vertical lines across the performance trace, you can see impo
DevTools provides two ways to analyze frames per second:
888
869
889
-
* Use [the Frames section](#the-frames-section) to view how long a particular frame took.
870
+
* Use the **Frames** section to view how long a particular frame took. See [The Frames section](#the-frames-section), below.
890
871
891
872
* Use the **FPS meter** for a realtime estimate of FPS as the page runs. See [View frames per second in realtime with the FPS meter](#view-frames-per-second-in-realtime-with-the-fps-meter), below.
The **Frames** section tells you exactly how long a particular frame took.
898
880
899
881
Hover over a frame to view a tooltip with more information about it:
900
882
901
883

902
884
903
-
Select a frame to view more information about the frame in the **Summary** tab at the bottom of the **Performance** tool. DevTools outlines the selected frame in blue:
885
+
The above example shows a tooltip when you hover over a frame.
886
+
887
+
The Frames section can show four types of frames:
888
+
889
+
* Idle frame (white). No changes.
890
+
891
+
* Frame (green). Rendered as expected and in time.
892
+
893
+
* Partially presented frame (yellow with a sparse wide dash-line pattern). Microsoft Edge did its best to render at least some visual updates in time. For example, in case the work of the main thread of the renderer process (canvas animation) is late but the compositor thread (scrolling) is in time.
894
+
895
+
* Dropped frame (red with a dense solid-line pattern). Microsoft Edge can't render the frame in reasonable time.
896
+
897
+
<!--  -->
898
+
899
+
<!-- The above example shows a tooltip when you hover over a partially presented frame. -->
900
+
901
+
Click a frame to view more information about the frame in the **Summary** tab at the bottom of the **Performance** tool. DevTools outlines the selected frame in blue:
904
902
905
-

903
+

<!-- upstream walks through a different demo page, so section content differs -->
910
910
911
911
Expand the **Network** section to view a waterfall of network requests that occurred during the recording:
912
912
@@ -918,30 +918,31 @@ Click on a request to view more information about it in the **Summary** tab:
918
918
919
919
Requests in the **Network** section are color-coded as follows:
920
920
921
-
*Blue background: HTML request.
922
-
*Purple background: CSS request.
923
-
*Dark yellow background: JS request.
924
-
*Green background: image request.
921
+
* Blue background: HTML request.
922
+
* Purple background: CSS request.
923
+
* Dark yellow background: JS request.
924
+
* Green background: image request.
925
925
926
926
Requests have squares in the top-left corner:
927
-
*A darker-blue square in the top-left of a request means it's a higher-priority request.
928
-
*A lighter-blue square means lower-priority.
927
+
* A darker-blue square in the top-left of a request means it's a higher-priority request.
928
+
* A lighter-blue square means lower-priority.
929
929
930
930
For example, in the previous figure, the **photo-gallery** request, in the top left corner of the **Network** section is higher-priority.
931
931
932
-
Requests might have lines on the left and right sides, and their bars might be split into two colors. Here's what these lines and colors represent:
932
+
Requests might have lines on the left and right sides, and their bars might be split into two colors. Here's what these lines and colors represent:
933
933
934
-
*The left line is everything up to the `Connection Start` group of events, inclusive. In other words, it's everything before `Request Sent`, exclusive.
934
+
* The left line is everything up to the `Connection Start` group of events, inclusive. In other words, it's everything before `Request Sent`, exclusive.
935
935
936
-
*The light portion of the bar is `Request Sent` and `Waiting (TTFB)`.
936
+
* The light portion of the bar is `Request Sent` and `Waiting (TTFB)` for server response.
937
937
938
-
*The dark portion of the bar is `Content Download`.
938
+
* The dark portion of the bar is `Content Download`.
939
939
940
-
*The right line is essentially time spent waiting for the main thread. This isn't represented in the **Timing** tab.
940
+
* The right line is essentially time spent waiting for the main thread. This isn't represented in the **Timing** tab.
When analyzing a section like **Network** or **Main**, sometimes you need a more precise estimate of how long certain events took. Hold **Shift**, click and hold, and drag left or right to select a portion of the recording. At the bottom of your selection, DevTools shows how long that portion took:
966
968
@@ -969,6 +971,7 @@ When analyzing a section like **Network** or **Main**, sometimes you need a more
The **FPS meter** is an overlay that appears in the top-left corner of the rendered webpage. It provides a realtime estimate of FPS as the page runs. To open the **FPS meter**:
Use Paint Flashing to get a realtime view of all paint events on the page. Whenever a part of the page gets re-painted, DevTools outlines that section in green.
Use the **Scrolling Performance Issues** checkbox to identify elements of the page that have event listeners related to scrolling that may harm the performance of the page. DevTools outlines the potentially problematic elements in teal.
0 commit comments