This section also describes performance benchmarking and summarizes the methodology in a step-by-step instruction form. For more information, see 9.2.11, “Summary” on page 283. 

## 9.2.1 Defining the purpose of performance benchmarking 

Before starting performance benchmarking, clarify the purpose of this activity. A clearly defined purpose of benchmarking is helpful in creating a plan of benchmarking and defining the success criteria. 

The purpose of performance benchmarking looks different from each of the following two points of view: 

GLYPH<SM590000> Performance benchmarking that is carried out by an application developer . 

GLYPH<SM590000> Performance benchmarking that is done by an application user  or a system administrator . 

## Benchmarking by application developers 

From the perspective of an application developer, the performance benchmarking is part of the software development process. An application developer uses performance benchmarking to pursue the following goals: 

GLYPH<SM590000> Comparing the code’s performance with the performance model. 

GLYPH<SM590000> Identifying bottlenecks in the code that limit its performance (this process is typically done by using profiling). 

GLYPH<SM590000> Comparing the code’s scalab ility with the scalability model. 

GLYPH<SM590000> Identifying parts of the code that prevent scaling. 

GLYPH<SM590000> Tuning the code to specific computer hardware. 

A software developer performs a performance benchmarking of an application to understand how to improve application performance by changing an algorithm. Performance benchmarking viewed from an application developer perspective has complex methodologies. These methodologies are not covered in this publication. 

## Benchmarking by application users and system administrators 

From the perspective of an application user  or a system administrator,  performance benchmarking is a necessary step before using an application for production runs on a computing system that is available for them. Application users and system administrators make the following assumptions: 

GLYPH<SM590000> An application will be used on a computing system many times in the future. 

GLYPH<SM590000> It makes sense to invest time into performance benchmarking because the time will be made up by faster completion of production runs in the future. 

GLYPH<SM590000> Modification of an application source code is out of their scope. 

This statement implies that application users and system administrators are limited to the following choices to tune the performance: 

– Different compilers 

– Compiler optimization options 

– SMT mode 

– Number of computing cores 

– Runtime system parameters and environment variables 

–O S  p a r m e t r s 

Essentially, applications users and system administrators are interested in how to make an application solve problems as fast as possible without changing the source code. 

