Switch branches/tags
Nothing to show
Find file History
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
..
Failed to load latest commit information.
Makefile.am
README
bigcode.c
bigcode1.vgperf
bigcode2.vgperf
bz2.c
bz2.vgperf
fbench.c
fbench.vgperf
ffbench.c
ffbench.vgperf
heap.c
heap.vgperf
sarp.c
sarp.vgperf
test_input_for_tinycc.c
tinycc.c
tinycc.vgperf
vg_perf.in

README

=============================================================================
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.