Skip to content

Improve nofib comparison output

When running nofib comparisons, I use these instructions

But "Comparison" command, namely $ cabal v2-run nofib-compare -- approach-b.results.csv approach-a.results.csv, generates output that is much less helpful than it used to be. Sample:

# bytes allocated

+-------------------------------++--+----------------------------------------------------------------+-----------+----------------------------------------+-----------+
|                               ||  | /home/simonpj/code/HEAD/nofib/_make/2022-08-19/run.results.tsv | std. err. | _make/2022-08-25/run.results.tsv (rel) | std. err. |
+===============================++==+================================================================+===========+========================================+===========+
|          imaginary/bernouilli ||  |                                                        2.823e9 |      0.0% |                                  0.00% |      0.0% |
|        imaginary/digits-of-e1 ||  |                                                        9.147e8 |      0.0% |                                  0.00% |      0.0% |
|        imaginary/digits-of-e2 ||  |                                                        2.279e9 |      0.0% |                                 +0.01% |      0.0% |
|              imaginary/exp3_8 ||  |                                                        5.887e9 |      0.0% |                                  0.00% |      0.0% |
|         imaginary/gen_regexps ||  |                                                        9.102e8 |      0.0% |                                  0.00% |      0.0% |
....
|           imaginary/integrate ||  |                                                        3.424e9 |      0.0% |                                  0.00% |      0.0% |
|               spectral/simple ||  |                                                        1.201e9 |      0.0% |                                  0.00% |      0.0% |
|              spectral/sorting ||  |                                                        3.077e9 |      0.0% |                                  0.00% |      0.0% |
|               spectral/sphere ||  |                                                        2.236e9 |      0.0% |                                  0.00% |      0.0% |
|             spectral/treejoin ||  |                                                        2.796e9 |      0.0% |                                  0.00% |      0.0% |
+===============================++==+================================================================+===========+========================================+===========+
|                     geom mean ||  |                                                                |    -0.03% |                                        |           |
+-------------------------------++--+----------------------------------------------------------------+-----------+----------------------------------------+-----------+

Problems:

  • It is far too wide. I have to resize my editor window every time, and my screen becomes mostly blank.
  • There is no min and max, only geometric mean.
  • It's not obvious what the geom mean is for. It sits at the bottom of the "std error column" but I'm guessing it belongs in the next column.
  • I have no idea what either "std err" column is. They are always zero, diverting attention.
  • The old nofib-analyse started with a table that looked like this, where I'm comparing a baseline run with three comparator runs (X1, X2, and X3, say)
    Benchmark         Binary size change     Runtime allocs change      Runtime change
                       X1     X2   X3        X1   X2   X3               X1     X2   X3
    spectral/sphere    +2.8%  -3%  0%       +1%  -1%  +2.7%             +0.8%  +2%  +6%
    This was great for getting an overview of the key changes: binary size, allocs, runtime. (A column for compiler allocs would be great too.) Could we have this back?
Edited by Simon Peyton Jones
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information