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