|Home > Chapter 4. The Summary Report|
This chapter describes RealView Profiler's summary report, the default view when you open an analysis file. It includes an overview, a description of how to open an analysis file, and an in-depth look at each of the summary report's components.
4.1 Summary report overview
Now that you have put your algorithm through its paces and collected profiling statistics, it is time to make sense of the raw data. The analysis data provided by RealView Profiler will allow you to quickly uncover the performance bottlenecks.
RealView Profiler's summary report is the first report you will see when you open an analysis file. From here, you can navigate to all of the other report types using the navigation section in the top left hand corner of the report. It also gives a good top-level overview of your profiling results. The top five self time consuming functions are shown as a bar chart, while your code coverage percentages are shown for functions and instructions as color-coded pie charts. For a detailed description of the 'Self Time' statistic, see Chapter 5 Table Report Column Headers. In addition to the navigation section, the bar graphs and pie charts can also be used to navigate to more detailed reports. Want to see detailed information for a critical function? Double-click on it in the top five functions by self time bar chart and the code view report will open for the chosen function.
4.2 Opening a summary report
To open an analysis file you have created, double-click on the .rpa file in the Eclipse navigator. This will open the summary report in the editor section of Eclipse, a quick top-level glimpse at the performance of your system.
The navigator displays the analysis file icon next to any .rpa file and analysis files are usually named according to their project title and order of creation. For example, the first analysis file created in the DOOM project would be called DOOM_001.rpa.
Opening an analysis file will open the summary report in the editor section of Eclipse. All other report types appear in the summary report's navigation section, so getting to any of the other report types is as easy as clicking on one of the report links.
For the best view of the analysis reports, switch to the RealView Profiler Eclipse perspective by choosing Window > Open Perspective > RealView Profiler.
4.3 Summary report elements
In addition to providing general information and navigation options, the summary report provides meaningful information about where to begin your search for optimizations.
Figure 4.1. A Sample Summary Report
As you can see in Figure 4.1, the summary report gives you a general overview of your algorithm's performance and is divided into seven sections:
The 'Top 5 Classes by Self Time' is specific to C++ reports. It will not appear in an analysis file generated using standard C code.
For the purposes of this section, you will find the code coverage pie charts and top five bar charts grouped together.
Located in the top left of any summary report, the navigation section enables you to open any of RealView Profiler's report types:
The class report navigation option only appears in reports generated using C++.
Click on the link to the function report to open a table report that lists every function alongside execution, code coverage and timing statistics. Similar in form to the function report, the class report's statistics are broken down by C++ class and contain the function count column header. The file report is a table report that contains statistics broken down by source file.
The code view shows you both your source code and disassembly code with line-by-line performance statistics for a finer-grain level of detail than the function report. Clicking on this link in the summary report will open the code view to the entry point of the code.
The call graph is a visual representation of your code's hierarchy, color-coded to show you the performance bottlenecks. The top five self time consuming functions are colored using the same palette as the top five bar charts. The call chain is a hierarchical table report that allows you to explore every branch of your code. In it, statistics are given by instance, so if a function is called in more than one place, you can see its usage statistics for each of its branch locations. The call summary also enables you to explore your code to see how certain instances and called functions affect its performance statistics. Unlike the call chain, the call summary gives visual representation of your branching source code instead of hierarchical table report data.
The help button in the navigation section opens Eclipse's help view with a list of help topics that relate specifically to the summary report. If you have questions about anything contained in the summary report, click on this 'Help' link or hit the 'F1' key (Shift + F1 in Linux) while the summary report is active.
4.3.2 Information section
The information section provides you with information regarding the code's execution count, total time and sampling information, if applicable. It reports the following details of the execution captured by the analysis file:
4.3.3 The code coverage pie charts
The code coverage pie charts are located in the bottom left of the summary report and give you a top-level look at the percentage of functions and instructions actually executed during the captured execution.
Figure 4.2. Sample code coverage pie charts
The code coverage by instruction pie chart shows graphically the percentage of assembly instructions that were run during execution. Green represents the percentage of instructions that were completely executed, red represents instructions that were not executed at all and yellow represents instructions that were partially executed. For example, if only one branch of an instruction was used during this captured run, the instruction is marked as having partial code coverage.
The second pie chart is similar to the code coverage by instruction chart, but shows code coverage by function. Here, the yellow partial coverage slice is likely to be larger as functions where even one line of code is not executed are labeled as having partial coverage.
Double-clicking on one of the pie chart slices will open the function report with each function of that code coverage type highlighted. The opened function report will also be automatically sorted by code coverage if it is accessed in this manner. For example, double-clicking on either of the red slices will open the function report with all of the 0% code coverage functions selected and centered in view.
4.3.4 The top five bar charts
The summary report's top five bar charts are a good top-level measuring stick for the overall performance of your code, displaying the top five functions in a few different categories.
Figure 4.3. The Top Five Bar Charts
The top five functions by self time bar chart shows you which functions the sample code spent the most time executing during the captured run. The bar chart's number represents a percentage of the whole, so a function that appears in this chart with a top bar labeled 50% means that half the time used in the run was dedicated to instructions within this function. Double-clicking on any of the bars will open that function's code view. This is not the only navigation option provided by the top five functions bar chart. Right-click on any of the chart's bars to open a contextual menu with the following menu options:
The first option, 'Select in Function Report', opens the function report, with the function selected. 'Select in Class Report' will only appear if the analysis file has been generated using C++. It opens a class report with the chosen function's class selected. The 'Select in File Report' option opens the file report with the function's source file selected. 'Select in Code View', opens the code view for the selected function, with all of the instructions and pertinent lines of code highlighted.
'Select in Call Chain' opens the call chain report with every instance of the function selected and the hierarchal report broken down so that they are all visible. The 'Select in Call Graph' and 'Select in Call Summary' options open the visual reports with the function active and centered, while the 'Edit Source' option opens the function's source file in Eclipse's default editor.
The 'Edit Source' contextual menu option will only appear if the file is a standard C or C++ file. If the bar represents the image file itself, the 'Edit Source' option will not appear.
Just below the 'Top 5 Functions by Self Time' bar charts, in any report generated using C++ code, is the 'Top 5 Classes by Self Time' bar chart. This chart breaks down the top self time consumers by C++ class, reporting the class names and percentages. The navigation options for the class reports mirror those of the function bar charts.
The 'Top 5 Functions by Delay' and 'Top 5 Functions by Memory Access' charts are similar to the 'Top 5 Functions by Self Time' bar chart, only they display the five functions with the highest 'Delay' and Accessed' values, respectively. The navigation options for this bar chart are the same as in the 'Top 5 Functions by Self Time' report.
If the program is very small and there are not enough files or functions to populate the top five bar charts, RealView Profiler fills the charts with as much data as possible and increases the thickness of the bars to fill the space.