Example - How to analyze the Streamline capture
In the Timeline view, you can see a timeline with information such as CPU activity, branch mispredictions, and instructions executed. You can click the timeline to set a cross-section market at 1.75 seconds of execution. That point in the execution time corresponds to one of the activity peaks in the Cortex-A7 core.
In the heat map below, you can see the CPU activity for the different processes. At 1.75s, you notice that the
xaos #2750 process is in orange color, using 36.37% of the CPU Activity.
Go to the Call Paths view selecting the Call Paths tab. The
main code is contained within the
xaos #2750 process and thread. We want to see which functions in
main are using more resources. If you click
main, you can see that more than half of the samples (52.81%) in
main correspond to the function
VisualAnnotateImage. That corresponds to a 11.11% of samples in the
xaos #2750 process.
Now, select the Functions tab to see the Functions view. You can see that the function
VisualAnnotateImage appears at the top and that it is one of the functions with the highest number of samples. Double-click the function to open the Code view for the
One of the advantages of Streamline is that you can obtain a performance analysis from a high level and general perspective to the lowest level possible. In this example, we began detecting one of the processes with the highest CPU activity. Then, we detected one of the functions with more samples, within the main code that is executed in that process. Now, we can reach the lowest level possible, which is detecting which instructions are executed more frequently.
In the Code view, you see the code for the
VisualAnnotateImage function, which is included in
annotate.c. Select the highlighted icon in the following image to also show the assembly code:
The code in line 174 (
for loop) corresponds to the 49.04% of the samples in the function. If you click the line 174, you can see the associated assembly code in green. You have been able to locate the instructions that are constantly executed in your code. This procedure can help you detecting bottlenecks in your code. The instruction
ADD r2,r2,#3 corresponds to the 30.05% of the samples in the