Philippe Waroquiers 2bd926a725 outer/inner setup: new perf/vg_perf options to run perf tests + support translation chaining in inner.
* perf/vg_perf:
Similarly to tests/vg_regtest, perf/vg_perf now accepts the 3 
optional arguments:
    --outer-valgrind
    --outer-tool
    --outer-args

This allows easy analysis or comparison of performance between
different Valgrind versions (e.g. using callgrind, or cachegrind/cg_diff).

* See README_DEVELOPERS for more details.

* vg_regtest modified so as to use the 'in-place' build of inner, rather
  than the installed version.

* added option --smc-check=all-non-file to vg_perf and vg_regtest 
  outer default arguments (needed when evaluating a Valgrind which does
  translation chaining).




git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12496
2012-04-08 19:52:38 +00:00
..
2006-10-17 12:49:31 +00:00
2005-12-25 06:27:51 +00:00

=============================================================================
Notes about performance benchmarks
=============================================================================
For each benchmark, here is a brief description and notes about its
strengths and weaknesses.

-----------------------------------------------------------------------------
Artificial stress tests
-----------------------------------------------------------------------------
bigcode1, bigcode2:
- Description: Executes a lot of (nonsensical) code.
- Strengths:   Demonstrates the cost of translation which is a large part
               of runtime, particularly on larger programs.
- Weaknesses:  Highly artificial.

heap:
- Description: Does a lot of heap allocation and deallocation, and has a lot
               of heap blocks live while doing so.
- Strengths:   Stress test for an important sub-system; bug #105039 showed
               that inefficiencies in heap allocation can make a big
               difference to programs that allocate a lot.
- Weaknesses:  Highly artificial -- allocation pattern is not real, and only
               a few different size allocations are used.

sarp:
- Description: Does a lot of stack allocation and deallocation.
- Strengths:   Tests for a specific performance bug that existed in 3.1.0 and
               all earlier versions.
- Weaknesses:  Highly artificial.

-----------------------------------------------------------------------------
Real programs
-----------------------------------------------------------------------------
bz2:
- Description: Burrows-Wheeler compression and decompression.
- Strengths:   A real, widely used program, very similar to the 256.bzip2
               SPEC2000 benchmark.  Not dominated by any code, the hottest
               55 blocks account for only 90% of execution.  Has lots of
               short blocks and stresses the memory system hard.
- Weaknesses:  None, really, it's a good benchmark.

fbench:
- Description: Does some ray-tracing.
- Strengths:   Moderately realistic program.
- Weaknesses:  Dominated by sin and cos, which are not widely used, and are
               hardware-supported on x86 but not on other platforms such as
               PPC.

ffbench: 
- Description: Does a Fast Fourier Transform (FFT).
- Strengths:   Tests common FP ops (mostly adding and multiplying array
               elements), FFT is a very important operation.
- Weaknesses:  Dominated by the inner loop, which is quite long and flatters
               Valgrind due to the small dispatcher overhead.

tinycc:
- Description: A very small and fast C compiler.  A munged version of
               Fabrice Bellard's TinyCC compiling itself multiple times.
- Strengths:   A real program, lots of code (top 100 blocks only account for
               47% of execution), involves large irregular data structures
               (presumably, since it's a compiler).  Does lots of
               malloc/free calls and so changes that make a big improvement
               to perf/heap typically cause a small improvement.
- Weaknesses   None, really, it's a good benchmark.