mirror of
https://github.com/ioacademy-jikim/debugging
synced 2025-06-08 08:26:14 +00:00
66 lines
3.1 KiB
Plaintext
66 lines
3.1 KiB
Plaintext
=============================================================================
|
|
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.
|
|
|