1# NoFib: Haskell Benchmark Suite
2
3This is the root directory of the "NoFib Haskell benchmark suite". It
4should be part of a GHC source tree, that is the 'nofib' directory
5should be at the same level in the tree as 'compiler' and 'libraries'.
6
7## Package Depedencies
8
9Please make sure you have the following packages installed for your
10system GHC:
11* html
12* regex-compat (will install: mtl, regex-base, regex-posix)
13
14## Using
15
16Then, to run the tests, execute:
17
18make clean
19make boot
20make 2>&1 | tee nofib-log
21
22This will put the results in the file `nofib-log`. You can pass extra
23options to a nofib run using the `EXTRA_HC_OPTS` variable like this:
24
25make clean
26make boot
27make EXTRA_HC_OPTS="-fllvm" >&1 | tee nofib-llvm-log
28
29To compare the results of multiple runs, use the program in
30`../utils/nofib-analyse`, for example:
31
32nofib-analyse nofib-log-6.4.2 nofib-log-6.6
33
34to generate a comparison of the runs in captured in `nofib-log-6.4.2`
35and `nofib-log-6.6`. When making comparisons, be careful to ensure
36that the things that changed between the builds are only the things
37that you _wanted_ to change. There are lots of variables: machine,
38GHC version, GCC version, C libraries, static vs. dynamic GMP library,
39build options, run options, and probably lots more. To be on the safe
40side, make both runs on the same unloaded machine.
41
42## Configuration
43
44There are some options you might want to tweak; search for nofib in
45`../mk/config.mk`, and override settings in `../mk/build.mk` as usual.
46
47## Extra Metrics: Valgrind
48
49To get instruction counts, memory reads/writes, and "cache misses",
50you'll need to get hold of Cachegrind, which is part of
51[Valgrind](http://valgrind.org).
52
53## Extra Packages
54
55Some benchmarks aren't run by default and require extra packages are
56installed for the GHC compiler being tested. These packages include:
57* stm - for smp benchmarks
58