There are many ways to measure performance.
Some common metrics include:
Metrics that are more abstract have the advantage that they are
simple to reason about
and applicable across a variety of implementations.
For example, host instructions may be counted relatively easily for each
of a variety of target instructions,
and the counts are relatively isolated from the structure of the caches
Conversly, concrete metrics tend to more accurately reflect all related
For example the effects of caches and microarchitectures are
- host instructions executed per target instruction executed;
- host cycles executed per target instruction executed;
- relative wallclock time of host and target
It is worth noting that few reports give enough information about the
measurement methodology in order to make a valid comparison.
For example, if dilation is ``typically'' 20x, what is ``typical'', and
what is the performance for ``non-typical'' workloads?
From instruction-set simulation and tracing