Next: , Up: Introduction   [Contents][Index]


1.1 What Is A Benchmark

Benchmark commonly names some software used to measure the performance of certain hardware and/or software. Sometimes these values cannot be directly measured, e.g. in an unknown or dynamic environment, and proxy measures are used to estimate it.

The performance of a processing unit is usually represented by operations per time units. Software throughput can be measured on size units per time units. Software performance can be measured on time units too. These quantities are compared on different environments, where its values produce an ordering between the compared things1.

The need of more efficient programs has been present since long time ago, therefore tools to aid with this task can be found on almost any operating system. For example, the shell keyword time (see Pipelines in GNU Bash Reference Manual) can be used to measure the execution time of a process.

To aid with a finer grain optimization, modern operating systems implement a measurement process called profiling (see GNU profiler gprof.) A profiler usually works by taking samples of the call stack on the executing process with certain frequency.

Modern processors incorporate performance counters, whose values can be accessed through utilities such as perf (see perf wiki), which can be used as a profiler too.


Footnotes

(1)

The comparison with an established reference is the main idea of a benchmark.