1 ============================================================================= 2 Notes about performance benchmarks 3 ============================================================================= 4 For each benchmark, here is a brief description and notes about its 5 strengths and weaknesses. 6 7 ----------------------------------------------------------------------------- 8 Artificial stress tests 9 ----------------------------------------------------------------------------- 10 bigcode1, bigcode2: 11 - Description: Executes a lot of (nonsensical) code. 12 - Strengths: Demonstrates the cost of translation which is a large part 13 of runtime, particularly on larger programs. 14 - Weaknesses: Highly artificial. 15 16 heap: 17 - Description: Does a lot of heap allocation and deallocation, and has a lot 18 of heap blocks live while doing so. 19 - Strengths: Stress test for an important sub-system; bug #105039 showed 20 that inefficiencies in heap allocation can make a big 21 difference to programs that allocate a lot. 22 - Weaknesses: Highly artificial -- allocation pattern is not real, and only 23 a few different size allocations are used. 24 25 sarp: 26 - Description: Does a lot of stack allocation and deallocation. 27 - Strengths: Tests for a specific performance bug that existed in 3.1.0 and 28 all earlier versions. 29 - Weaknesses: Highly artificial. 30 31 ----------------------------------------------------------------------------- 32 Real programs 33 ----------------------------------------------------------------------------- 34 bz2: 35 - Description: Burrows-Wheeler compression and decompression. 36 - Strengths: A real, widely used program, very similar to the 256.bzip2 37 SPEC2000 benchmark. Not dominated by any code, the hottest 38 55 blocks account for only 90% of execution. Has lots of 39 short blocks and stresses the memory system hard. 40 - Weaknesses: None, really, it's a good benchmark. 41 42 fbench: 43 - Description: Does some ray-tracing. 44 - Strengths: Moderately realistic program. 45 - Weaknesses: Dominated by sin and cos, which are not widely used, and are 46 hardware-supported on x86 but not on other platforms such as 47 PPC. 48 49 ffbench: 50 - Description: Does a Fast Fourier Transform (FFT). 51 - Strengths: Tests common FP ops (mostly adding and multiplying array 52 elements), FFT is a very important operation. 53 - Weaknesses: Dominated by the inner loop, which is quite long and flatters 54 Valgrind due to the small dispatcher overhead. 55 56 tinycc: 57 - Description: A very small and fast C compiler. A munged version of 58 Fabrice Bellard's TinyCC compiling itself multiple times. 59 - Strengths: A real program, lots of code (top 100 blocks only account for 60 47% of execution), involves large irregular data structures 61 (presumably, since it's a compiler). Does lots of 62 malloc/free calls and so changes that make a big improvement 63 to perf/heap typically cause a small improvement. 64 - Weaknesses None, really, it's a good benchmark. 65 66