Selecting and Evaluating Performance Analysis Tools Sample Clauses

Selecting and Evaluating Performance Analysis Tools. The selection of programming model and hardware platform will determine the attainable performance and energy efficiency of the embedded image processing application, while the capabilities of the performance analysis tools that are available for the chosen programming model and platform will determine how productively an application that meets requirements can be developed. In other words, the existence of efficient performance analysis tools is a secondary concern. It is not useful to quickly develop a solution with a programming model that cannot meet performance and energy efficiency requirements. The existence of advanced performance analysis tools can only impact programming model and hardware platform selection when there are multiple options that can meet requirements. In this case, the performance analysis tools can be evaluated on their ability to: Efficient performance problem detection tends to require some form of application profiling combined with high-level visualisations such as ▇▇▇▇▇ charts or Grain Graphs [26]. With ap- propriate mechanisms, the visualisations can automatically zoom in on problematic sections and thereby significantly simplify performance problem detection. By leveraging the debug information available in the application binary, it is possible to map a performance problem to a specific source code location. By externally sampling the CPU program counter, it is possible to implement a similar strategy to relate instantaneous power measurements to source code constructs [13]. Providing analysis functions that can automatically solve performance problems is a chal- lenging research problem, and solving problems tends to be the responsibility of the appli- cation developer. A different approach is restricting the formulation of programs such that performance problems are less likely to occur (e.g., [23, 34]). Another class of approaches can avoid some platform-specific performance issues by conducting an extensive Design Space Exploration (DSE) to ensure that implementation details are chosen to arrive at a high-performance design point (e.g., [55]). An interesting compromise is to explore semi- automatic approaches where a tool provides suggestions on how a performance problem can be dealt with and the developer leverages domain knowledge to choose the exact strat- egy.