It is often said that a programmer’s best friend is a good text editor, and that their best tool is their brain. Recently, I had an opportunity to examine and become familiar with a programmer’s second best tool: a good performance monitor.
For many applications, performance can be a critical advantage. Almost any scientific or engineering computing falls into this category, such as crash simulations, or weather modeling. However many desktop applications require good performance: computer games and video encoding are extremely taxing. In the embedded market, performance is likely to be even more important, unlike the general market; systems are not upgraded with faster hardware on a regular basis, and resources are scarce. Many applications, such as cell phones are constrained by thermal and power characteristics, so developers must squeeze out every last bit of performance.