SPOT was written to help diagnose performance problems that can limit the speed of an application. The role of SPOT is complementary to running the application under the Sun™ Studio Performance Analyzer, and looking at the resulting experiment. The profile generated by Analyzer will tell you where the time was spent in running your application. In certain situations, however, you may not be able to diagnose your application’s problems just by examining its profile.
For example, some problems that cannot easily be solved by inspecting the application profile include:
Is the time spent in the routine high because the routine itself is slow, or because the routine is called a large number of times?
Is a line of code taking time because it misses cache or because it misses the translation lookaside buffer (TLB)?
Are traps slowing down the application?
Is the application reaching a memory bandwidth limit?
While you may be able to identify the cause of these issues by looking at the application’s profile and running additional tools, you may not know what tools are available or which specific tool to use.
SPOT simplifies the entire process of performance analysis by running an application under a common set of tools and producing an HTML report of its findings. This provides the following benefits:
By creating HTML reports, SPOT enables the reports to be placed on a server that can be accessed by an entire development team. For example, a SPOT report can be examined by remote colleagues, or referred to during a meeting. You could even email a URL of a particular line of source code, or disassembly, to a colleague for further review.
The SPOT report archives the compiler build commands as well as the profile for the active parts of the application. By comparing the current application profile with an older profile, you can easily check for either changed code or changed compiler build flags.
SPOT can also profile the application according to the most frequently occuring hardware events; this indicates which routines are encountering which problems.