The Performance Profile viewer displays the execution time for all functions or methods executing within the application of interest, thereby allowing the user to uncover potential bottlenecks. First, the three functions or methods requiring the most amount of time are displayed graphically in a pie chart (up to six functions will be displayed if each is individually responsible for more than 5% of total execution time). This is then followed by a sortable list of every function or method, with timing measurements displayed.
To read the Performance Profiling report:
Select the Performance Profile tab.
Notice how the function tcpsck_data_ready was responsible for around 45% to 50% of the time spent processing information in the UMTS base station. By looking at the table, where times are listed in microseconds, we can see that this function's average execution time was between 1 to 2 seconds (it will vary somewhat based on your machine) and that it has no descendents - i.e. it never calls and then awaits the return of other functions or methods (which explains why the Function time matches the F+D time). Is this to be expected? If you wished, you could click on the function name in the table to jump to that function to see if its execution time can be reduced.
Each column can be used to sort the table - simply click on the column heading.
Click the column heading entitled F+D Time
It is probably no surprise that the main() procedure - combined with its descendents - takes the longest time to execute overall. Notice, though, that the main() procedure itself only takes around 300Ás (depending on the operating system) to execute - so there doesn't appear to be any bottleneck here. The main() procedure spends its life waiting for the UMTS base station to exit.
As with the memory profiling feature, notice how easy it was to gather this information. Performance profiling can now also be part of your regression test suite. And again, as with every other runtime analysis feature, performance profiling functionality is identical whether it is used on your host platform or on your embedded target.