Next: MicroBenchmark Concepts, Up: Introduction [Contents][Index]
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.