RFC: Add HasCallStack constraint to partial Data.List functions.

Andreas Abel andreas.abel at ifi.lmu.de
Sun May 30 17:50:56 UTC 2021


+1 Such a change is very welcome!  --Andreas

On 2021-05-30 15:52, Oleg Grenrus wrote:
> I'm proposing to add HasCallStack constraint for partial functions
> in base package for functions in Data.List and Data.List.NonEmpty:
> 
> - head, tail, init, last, ...
> - foldr1, foldl1, maximum, minimum, ...
> - (!!)
> 
> ---
> 
> The previous discussions started by Luo Chen can be found at
> https://gitlab.haskell.org/ghc/ghc/-/issues/17040 (from August 2019)
> 
> and libraries list from June 2019
> https://mail.haskell.org/pipermail/libraries/2019-June/029652.html
> 
> ---
> 
> My motivation comes from seeing GHCJS failing with
> "Prelude.!! negative index" exception and
> cabal-install with head of empty list.
> 
> ---
> 
> In #17040 issue Ben Gamari comments [1]
> 
>> In general, adding HasCallStack constraints on things like simple
>> non-recursive functions like fromJust and head seems like a reasonable
>> trade-off; these functions will essentially always inline and
>> consequently the cost of the constraint will vanish.
> 
> Such patch is now available at
> https://gitlab.haskell.org/ghc/ghc/-/merge_requests/5833
> 
> After accepting few changed test outputs, no further changes were needed.
> 
> ---
> 
> Ben continues:
> 
>> Adding HasCallStack constraints on typeclass-overloaded methods isn't
>> as clear. After all, it's quite likely that these functions will be
>> reached by dynamic dispatch which will become more expensive with the
>> additional callstack argument.
> 
> I agree. Foldable.foldr1 may not be partial, e.g. it isn't for NonEmpty.
> 
> More correct approach would be to add Foldable1 [2] class to base, and
> in some distant future remove potentially partial members from Foldable.
> 
> Therefore my patch _does not change_ Foldable.
> 
>> nofib may not be a very good test for this patch as it doesn't contain
>> many uses of the affected functions
> 
> Indeed. These functions are hardly ever in tight performance critical
> code, thus I'm skeptical about they affecting a code written by
> performance aware people. Re-implementing `head` in a loop where it
> causes performance regression is trivial.
> 
> I have run `nofib` anyway. Results are at the end.
> 
>> I think it would be a good idea to start with a minimal patch adding
>> constraints to the simple cases. We should then verify that the patch
>> doesn't affect the Core produced by typical use-cases (perhaps even
>> adding tests such that these don't regress). Once we know that the
>> simple cases are safe we can move on to the harder cases.
> 
> Such patch is now available at
> https://gitlab.haskell.org/ghc/ghc/-/merge_requests/5833
> 
> ---
> 
> Let me go through other comments in previous discussions, to have fuller
> overview.
> 
> ---
> 
> Some people are in favour, e.g.
> - Simon Jakobi,
> https://mail.haskell.org/pipermail/libraries/2019-June/029655.html
> - Hécate, https://gitlab.haskell.org/ghc/ghc/-/issues/17040#note_355561
> 
> ---
> 
> Richard [3] thinks that e.g. a year prior addition of HasCallStack to
> fromJust
> [4] is not a right thing.
> 
>> I don't have any particular insight to how to do call stacks better --
>> and I am swayed by the argument that we need call stacks even in
>> production -- but I don't think HasCallStack is the way. That was
>> always meant as just a small hack!
> 
> This patch is indeed more pragmatic than elegant, but takes us from
> takes us from spending potentially many hours finding the source of a
> crash to being pointed at the very line where it happens directly, which
> is invaluable for production systems.  I.e. let not (unknown) perfect be
> an enemy of good solution.
> 
> ---
> 
> In fromJust issue discussion [4] Ben comments
> 
>> However, I should emphasize to that we don't want to simply scatter
>> HasCallStacks on every partial function. We should be thoughtful and
>> deliberate (and probably consult with the CLC) when making changes
>> like this.
> 
> This email is indeed a request for CLC to comment.
> 
> ---
> 
> Edward Kmett comments was in favour [5]
> 
>> I’m starting to warm to the idea of putting HasCallStack constraints
>> on the obviously partial combinators in base if we can demonstrate
>> that the performance impact isn't bad in practice, and even really, to
>> some extent if there is a somewhat middling impact on the performance
>> of code that leans on these hard to debug combinators, so long as the
>> performance of their more total siblings remains unaffected. The
>> impact on the perceived debuggability of Haskell seems _likely_ to
>> significantly outweigh the performance concerns.
> 
> The results (to follow) shows that impact isn't bad.
> 
>> Heck, off of the HEAD of cabal, which we’re encouraging folks to build
>> to play with the ghc 8.8.1 alpha, just today we ran into an issue
>> where the very build system we are using spat out an oh so informative
>> “Prelude.foldr1: Empty list” when using a pkgconfig-depends stanza
>> that didnt include any explicit bounds.
> 
> ---
> 
> David Feuer is worried about performance of recursive functions [6]
> 
>> As I recall, the main things to watch out for, performance-wise, are
>> recursive definitions. When we throw an error from a library function,
>> we *typically* mean that the caller made a mistake. We don't want to
>> build up the call stacks we'd need to debug the library function
>> itself, unless we're actually doing so (in which case we can edit it
>> in, of course).
> 
> In current base implementation all recursive functions (like foldr1, or
> !!) have internal workers, so the callstack is not building-up.
> 
> Eric Seidel comments later [8]
> 
>> What I remember finding back then was that there was a small overhead
>> for non-recursive functions like `head` but a substantial overhead for
>> recursive functions.
> 
>>    I'd suggest extra care around recursive functions ((!!) comes to
>>    mind).  Perhaps rewrite them to use an inner recursive loop that does
>>    not extend the CallStack (this might produce nicer stacktraces
>>    anyway).
> 
> That is how (!!) is currently written in base. It has an inner worker.
> (His benchmark link is not valid anymore, so I cannot tell what !!
> variant he benchmarked).
> 
> ---
> 
> Matthew Pickering comments [7] about -xc RTS flag.
> 
>> I find this thread a bit concerning. In my opinion the current best
>> way to get call stacks on exceptions is with `-xc`. Adding runtime
>> overhead to every user program is not acceptable.
> 
> -xc requires recompiling the program for profiling.
> 
> He continues with
> 
>> There is an argument that it would be good to disentangle `-xc` from
>> `prof` but you would still have to compile `base` in this way which
>> instruments these partial functions (as a user can not do it herself).
>> I'm not too sure on the details but I don't think -xc uses any
>> information from the profiling header so the fact it's connected with
>> -prof seems more like convenience than necessity.
> 
> If that work is done, we can drop HasCallStack from partial functions,
> until then again let not perfect be the enemy of good.
> 
> For example, me seeing GHCJS throwing on !!, of Edward cabal-install on
> foldr1 doesn't help. Rebuilding cabal-install with profiling is viable
> (but not for an average person who downloads it with ghcup),
> rebuilding GHCJS for profiling is a skill few people have.
> 
> Already in his original proposal Luo Chen says:
> 
>> When we run a long running program, such as a web service, it is not
>> easy to reproduce the issue, most of the time, you have no chance to
>> recompile or restart your program to debug, all you can rely on is the
>> printed logs, this makes -xc not as useful as HasCallStack.
> 
> ---
> 
> People are worried about performance.
> GHC itself uses some of the a affected functions.
> There are 30 foldr1, some head and tail calls, and also !! in `compiler/`
> 
> The performance metrics in MR do not regress.
> GHC is not slowed down.
> 
> I also run `nofib` using `--cachegrind -s Norm -j 16`, geometric means:
> 
> - allocations: -0.12%
> - instructions: +0.05%
> - LLC cache misses: +0.58%
> - L1 cache misses: +0.03%
> 
> And also using `--perf` (without `-j`):
> 
> - perf instructions: +0.02%
> - perf cycles: -0.80%
> 
> I don't know if this in bounds of "small changes to GHC".
> For me this looks acceptable.
> 
> ---
> 
> There is also off-thread blog post from 2018.
> https://neilmitchell.blogspot.com/2018/03/safe-library-with-better-stack-traces.html
> referencing e.g.
> https://hackage.haskell.org/package/extra-1.7.9/docs/Data-List-Extra.html#v:maximumOn
> and https://hackage.haskell.org/package/safe
> 
> safe library has plenty of reverse dependencies:
> https://packdeps.haskellers.com/reverse/safe, and extra is used by shake.
> 
> ---
> 
> In summary:
> 
> - fromJust has HasCallStack, head doesn't. Let us fix this.
> - Ben asked for patch so we can test performance, now such patch exists,
>    and it passes GHC CI.
> - GHC itself uses partial functions, its performance metrics don't
>    regress
> - -prof and +RTS -xc is an option, but it needs special build of an
>    executable.
> - This is ultimately for CLC to decide, so chessai, emilypi please tell
>    your opinion.
> 
> Discussion period one month, until 2021-06-30 (end of June this year).
> 
> Oleg
> 
> [1]: https://gitlab.haskell.org/ghc/ghc/-/issues/17040#note_231634
> [2]: https://mail.haskell.org/pipermail/libraries/2019-November/030059.html
>       https://gitlab.haskell.org/ghc/ghc/-/issues/13573
> [3]: https://gitlab.haskell.org/ghc/ghc/-/issues/17040#note_218035
> [4]: https://gitlab.haskell.org/ghc/ghc/-/issues/15559
> [5]: https://mail.haskell.org/pipermail/libraries/2019-June/029665.html
> [6]: https://mail.haskell.org/pipermail/libraries/2019-June/029666.html
> [7]: https://mail.haskell.org/pipermail/libraries/2019-June/029672.html
> [8]: https://mail.haskell.org/pipermail/libraries/2019-June/029667.html
> 
> ---
> 
> # bytes allocated
> 
> +-------------------------------++--+-------------+------------------+
> |                               ||  |     master/ | callstack/ (rel) |
> +===============================++==+=============+==================+
> |          imaginary/bernouilli ||  |     2.823e9 |            0.00% |
> |        imaginary/digits-of-e1 ||  |     1.069e9 |            0.00% |
> |        imaginary/digits-of-e2 ||  |     2.152e9 |            0.00% |
> |              imaginary/exp3_8 ||  |     5.888e9 |            0.00% |
> |         imaginary/gen_regexps ||  |     9.104e8 |            0.00% |
> |           imaginary/integrate ||  |     3.768e9 |            0.00% |
> |               imaginary/kahan ||  |   49088.000 |            0.00% |
> |           imaginary/paraffins ||  |     3.829e9 |            0.00% |
> |              imaginary/primes ||  |     2.928e9 |            0.00% |
> |              imaginary/queens ||  |     6.709e8 |            0.00% |
> |                imaginary/rfib ||  |  139952.000 |            0.00% |
> |                 imaginary/tak ||  |   97344.000 |            0.00% |
> |        imaginary/wheel-sieve1 ||  |     1.344e8 |            0.00% |
> |        imaginary/wheel-sieve2 ||  |     2.430e9 |            0.00% |
> |                imaginary/x2n1 ||  |     2.561e8 |            0.00% |
> |         parallel/blackscholes ||  |     1.980e9 |            0.00% |
> |                parallel/coins ||  |     5.252e9 |            0.00% |
> |                 parallel/gray ||  |     2.010e9 |           +0.00% |
> |               parallel/mandel ||  |     8.524e9 |            0.00% |
> |              parallel/matmult ||  |     8.974e7 |            0.00% |
> |              parallel/minimax ||  |    2.212e10 |            0.00% |
> |                parallel/nbody ||  | 1498304.000 |            0.00% |
> |               parallel/parfib ||  |     3.651e8 |            0.00% |
> |              parallel/partree ||  |     3.290e9 |            0.00% |
> |                 parallel/prsa ||  |     2.097e9 |            0.00% |
> |               parallel/queens ||  |     6.846e8 |            0.00% |
> |                  parallel/ray ||  |    1.357e10 |            0.00% |
> |             parallel/sumeuler ||  | 1785016.000 |            0.00% |
> |            parallel/transclos ||  |     8.976e9 |            0.00% |
> |                     real/anna ||  |     2.022e9 |           +0.01% |
> |             real/ben-raytrace ||  |    3.418e10 |            0.00% |
> |                     real/bspt ||  |     3.747e9 |            0.00% |
> |                real/cacheprof ||  |     2.689e9 |            0.00% |
> |                 real/compress ||  |     2.807e9 |            0.00% |
> |                real/compress2 ||  |     3.436e9 |            0.00% |
> |                   real/eff/CS ||  |     1.601e8 |            0.00% |
> |                  real/eff/CSD ||  |     1.600e9 |            0.00% |
> |                   real/eff/FS ||  |     1.760e9 |            0.00% |
> |                    real/eff/S ||  |     2.401e8 |            0.00% |
> |                   real/eff/VS ||  |     4.831e8 |            0.00% |
> |                  real/eff/VSD ||  |   50736.000 |            0.00% |
> |                  real/eff/VSM ||  |     4.001e8 |            0.00% |
> |                      real/fem ||  |     4.947e9 |           -2.81% |
> |                    real/fluid ||  |     2.169e9 |           -0.00% |
> |                   real/fulsom ||  |     1.961e9 |            0.00% |
> |                   real/gamteb ||  |     4.447e9 |            0.00% |
> |                       real/gg ||  |     2.654e9 |            0.00% |
> |                     real/grep ||  |     4.623e9 |            0.00% |
> |                   real/hidden ||  |     5.100e9 |            0.00% |
> |                      real/hpg ||  |     3.160e9 |           -0.10% |
> |                    real/infer ||  |     1.731e9 |            0.00% |
> |                     real/lift ||  |     2.761e9 |            0.00% |
> |                   real/linear ||  |     5.412e9 |           -0.07% |
> |                 real/maillist ||  |     3.331e9 |            0.00% |
> |                  real/mkhprog ||  | 9748392.000 |            0.00% |
> |                   real/parser ||  |     2.666e9 |            0.00% |
> |                      real/pic ||  |     1.469e9 |            0.00% |
> |                   real/prolog ||  |     2.922e9 |           -0.02% |
> |                  real/reptile ||  |     5.121e9 |            0.00% |
> |                      real/rsa ||  |     8.414e8 |            0.00% |
> |                      real/scs ||  |     4.044e9 |            0.00% |
> |                  real/smallpt ||  |     2.874e9 |            0.00% |
> |                   real/symalg ||  |     3.195e8 |            0.00% |
> |                  real/veritas ||  |     4.172e9 |            0.00% |
> |         shootout/binary-trees ||  |     4.300e9 |            0.00% |
> |       shootout/fannkuch-redux ||  |   69144.000 |           -0.03% |
> |                shootout/fasta ||  |     1.718e9 |           +0.00% |
> |         shootout/k-nucleotide ||  |     7.081e7 |           +0.00% |
> |               shootout/n-body ||  |  130608.000 |            0.00% |
> |             shootout/pidigits ||  |    1.027e10 |            0.00% |
> |   shootout/reverse-complement ||  |   59768.000 |            0.00% |
> |        shootout/spectral-norm ||  |  178112.000 |            0.00% |
> |               smp/callback001 ||  |     1.114e9 |            0.00% |
> |               smp/callback002 ||  |     3.264e9 |            0.00% |
> |                      smp/chan ||  |     1.240e9 |            0.00% |
> |                     smp/sieve ||  |     1.410e9 |            0.00% |
> |                smp/threads001 ||  |    1.072e10 |            0.00% |
> |                smp/threads003 ||  |     3.051e8 |           -0.01% |
> |                smp/threads006 ||  |     2.242e8 |            0.00% |
> |                smp/threads007 ||  |     1.778e9 |           -0.00% |
> |                 spectral/ansi ||  |     6.713e9 |            0.00% |
> |                 spectral/atom ||  |     3.580e9 |            0.00% |
> |               spectral/awards ||  |     4.759e9 |            0.00% |
> |               spectral/banner ||  |     6.156e9 |            0.00% |
> |                spectral/boyer ||  |     4.665e9 |            0.00% |
> |               spectral/boyer2 ||  |     1.153e9 |            0.00% |
> |             spectral/calendar ||  |     7.102e9 |            0.00% |
> |             spectral/cichelli ||  |     1.969e9 |            0.00% |
> |              spectral/circsim ||  |     4.850e9 |            0.00% |
> |             spectral/clausify ||  |     2.095e9 |            0.00% |
> |          spectral/constraints ||  |     4.872e9 |            0.00% |
> |         spectral/cryptarithm1 ||  |     5.981e9 |            0.00% |
> |         spectral/cryptarithm2 ||  |     3.663e9 |            0.00% |
> |                  spectral/cse ||  |     3.802e9 |            0.00% |
> |               spectral/dom-lt ||  |     3.890e9 |            0.00% |
> |                spectral/eliza ||  |     4.102e9 |           +0.00% |
> |          spectral/exact-reals ||  |     9.584e8 |           -0.00% |
> |               spectral/expert ||  |     2.090e9 |            0.00% |
> |                 spectral/fft2 ||  |     1.431e9 |           -0.22% |
> |             spectral/fibheaps ||  |     4.737e9 |            0.00% |
> |                 spectral/fish ||  |     6.193e9 |            0.00% |
> |                  spectral/gcd ||  |     2.069e9 |            0.00% |
> | spectral/hartel/comp_lab_zift ||  |     4.740e9 |            0.00% |
> |         spectral/hartel/event ||  |     3.635e9 |          -12.13% |
> |           spectral/hartel/fft ||  |     1.611e9 |            0.00% |
> |        spectral/hartel/genfft ||  |     8.020e9 |            0.00% |
> |           spectral/hartel/ida ||  |     3.515e9 |            0.00% |
> |     spectral/hartel/listcompr ||  |     6.157e9 |            0.00% |
> |      spectral/hartel/listcopy ||  |     6.758e9 |            0.00% |
> |      spectral/hartel/nucleic2 ||  |     2.965e9 |            0.00% |
> |       spectral/hartel/parstof ||  |     1.368e9 |            0.00% |
> |         spectral/hartel/sched ||  |     3.675e9 |            0.00% |
> |         spectral/hartel/solid ||  |     3.509e9 |            0.00% |
> |     spectral/hartel/transform ||  |     3.959e9 |            0.00% |
> |     spectral/hartel/typecheck ||  |     2.570e9 |            0.00% |
> |          spectral/hartel/wang ||  |     4.735e9 |            0.00% |
> |     spectral/hartel/wave4main ||  |     1.147e9 |            0.00% |
> |              spectral/integer ||  |     3.260e9 |            0.00% |
> |              spectral/knights ||  |     1.094e9 |            0.00% |
> |               spectral/lambda ||  |     2.950e9 |            0.00% |
> |           spectral/last-piece ||  |     6.852e8 |            0.00% |
> |                 spectral/lcss ||  |     6.565e9 |            0.00% |
> |                 spectral/life ||  |     6.799e9 |            0.00% |
> |               spectral/mandel ||  |     1.972e9 |            0.00% |
> |              spectral/mandel2 ||  |     5.231e8 |            0.00% |
> |                 spectral/mate ||  |     4.598e9 |            0.00% |
> |              spectral/minimax ||  |     2.683e9 |            0.00% |
> |           spectral/multiplier ||  |     2.850e9 |            0.00% |
> |                 spectral/para ||  |     4.056e9 |            0.00% |
> |                spectral/power ||  |     1.428e9 |            0.00% |
> |               spectral/pretty ||  |  136880.000 |           -0.11% |
> |            spectral/primetest ||  |     8.455e8 |            0.00% |
> |               spectral/puzzle ||  |     1.809e9 |            0.00% |
> |              spectral/rewrite ||  |     1.694e9 |            0.00% |
> |                  spectral/scc ||  |   58280.000 |            0.00% |
> |               spectral/simple ||  |     2.316e9 |            0.00% |
> |              spectral/sorting ||  |     3.078e9 |            0.00% |
> |               spectral/sphere ||  |     2.298e9 |            0.00% |
> |             spectral/treejoin ||  |     2.796e9 |            0.00% |
> +===============================++==+=============+==================+
> |                     geom mean ||  |      -0.12% |                  |
> +-------------------------------++--+-------------+------------------+
> 
> # instructions
> 
> +-------------------------------++--+------------+------------------+
> |                               ||  |    master/ | callstack/ (rel) |
> +===============================++==+============+==================+
> |          imaginary/bernouilli ||  |    7.057e9 |           +0.00% |
> |        imaginary/digits-of-e1 ||  |    5.549e9 |           -0.00% |
> |        imaginary/digits-of-e2 ||  |    5.555e9 |           -0.01% |
> |              imaginary/exp3_8 ||  |    8.779e9 |           +0.03% |
> |         imaginary/gen_regexps ||  |    8.650e9 |           -0.00% |
> |           imaginary/integrate ||  |    6.276e9 |           +0.00% |
> |               imaginary/kahan ||  |    6.707e9 |           +0.00% |
> |           imaginary/paraffins ||  |    8.089e9 |           -0.00% |
> |              imaginary/primes ||  |    8.278e9 |           +0.01% |
> |              imaginary/queens ||  |   1.010e10 |           -0.00% |
> |                imaginary/rfib ||  |    5.299e9 |           +0.00% |
> |                 imaginary/tak ||  |    5.867e9 |           +0.00% |
> |        imaginary/wheel-sieve1 ||  |    6.615e9 |           +0.04% |
> |        imaginary/wheel-sieve2 ||  |    6.286e9 |           +0.02% |
> |                imaginary/x2n1 ||  |    7.452e9 |           +0.00% |
> |         parallel/blackscholes ||  |    8.022e9 |           +0.00% |
> |                parallel/coins ||  |   1.149e10 |           +0.00% |
> |                 parallel/gray ||  |    6.141e9 |           +0.14% |
> |               parallel/mandel ||  |   3.288e10 |           -0.01% |
> |              parallel/matmult ||  |   1.115e10 |           -0.00% |
> |              parallel/minimax ||  |   3.863e10 |           -0.08% |
> |                parallel/nbody ||  |    7.939e8 |           +0.00% |
> |               parallel/parfib ||  |   2.231e10 |           +0.00% |
> |              parallel/partree ||  |    7.347e9 |           +0.01% |
> |                 parallel/prsa ||  |   1.811e10 |           -0.00% |
> |               parallel/queens ||  |   1.037e10 |           +0.00% |
> |                  parallel/ray ||  |   1.299e10 |           +0.00% |
> |             parallel/sumeuler ||  |    3.483e9 |           +0.00% |
> |            parallel/transclos ||  |   1.982e10 |           +0.00% |
> |                     real/anna ||  |    5.343e9 |           +0.05% |
> |             real/ben-raytrace ||  |   1.215e11 |           +0.00% |
> |                     real/bspt ||  |    9.226e9 |           -0.00% |
> |                real/cacheprof ||  |    6.763e9 |           +0.02% |
> |                 real/compress ||  |    5.820e9 |           -0.00% |
> |                real/compress2 ||  |    4.569e9 |           +0.00% |
> |                   real/eff/CS ||  |    7.758e8 |           +0.00% |
> |                  real/eff/CSD ||  |    3.745e9 |           +0.00% |
> |                   real/eff/FS ||  |    2.799e9 |           +0.00% |
> |                    real/eff/S ||  |    4.334e9 |           +0.00% |
> |                   real/eff/VS ||  |    2.221e9 |           +0.01% |
> |                  real/eff/VSD ||  |    8.075e7 |           +0.00% |
> |                  real/eff/VSM ||  |    9.635e8 |           +0.00% |
> |                      real/fem ||  |    6.649e9 |           -0.64% |
> |                    real/fluid ||  |    3.904e9 |           -0.00% |
> |                   real/fulsom ||  |    2.490e9 |           +0.00% |
> |                   real/gamteb ||  |   1.013e10 |           +0.01% |
> |                       real/gg ||  |    7.253e9 |           +0.01% |
> |                     real/grep ||  |    7.546e9 |           +0.00% |
> |                   real/hidden ||  |    7.198e9 |           +1.64% |
> |                      real/hpg ||  |    4.966e9 |           +0.88% |
> |                    real/infer ||  |    8.318e9 |           +0.00% |
> |                     real/lift ||  |    4.430e9 |           -0.00% |
> |                   real/linear ||  |    8.436e9 |           +1.97% |
> |                 real/maillist ||  |    1.974e9 |           +0.05% |
> |                  real/mkhprog ||  |    2.249e7 |           +0.00% |
> |                   real/parser ||  |    5.178e9 |           -0.00% |
> |                      real/pic ||  |    3.268e9 |           -0.00% |
> |                   real/prolog ||  |    5.742e9 |           +0.01% |
> |                  real/reptile ||  |    6.046e9 |           +0.00% |
> |                      real/rsa ||  |    7.191e9 |           +0.00% |
> |                      real/scs ||  |    6.174e9 |           +0.00% |
> |                  real/smallpt ||  |   1.128e10 |           +0.00% |
> |                   real/symalg ||  |    8.230e9 |           +0.00% |
> |                  real/veritas ||  |    4.832e9 |           -0.01% |
> |         shootout/binary-trees ||  |   1.073e10 |           +0.01% |
> |       shootout/fannkuch-redux ||  |   1.909e10 |           -0.00% |
> |                shootout/fasta ||  |    4.189e9 |           +0.00% |
> |         shootout/k-nucleotide ||  |    4.219e9 |           +0.01% |
> |               shootout/n-body ||  |    3.721e9 |           +0.00% |
> |             shootout/pidigits ||  |    8.084e9 |           +0.00% |
> |   shootout/reverse-complement ||  | 781364.000 |           +0.51% |
> |        shootout/spectral-norm ||  |    4.252e9 |           +0.00% |
> |               smp/callback001 ||  |    1.573e9 |           +0.01% |
> |               smp/callback002 ||  |    2.621e9 |           +0.00% |
> |                      smp/chan ||  |    8.718e9 |           +2.56% |
> |                     smp/sieve ||  |    5.538e9 |           -0.87% |
> |                smp/threads001 ||  |    5.139e9 |           -0.00% |
> |                smp/threads003 ||  |    2.903e9 |           -0.05% |
> |                smp/threads006 ||  |    7.402e8 |           +0.01% |
> |                smp/threads007 ||  |    4.090e9 |           -0.00% |
> |                 spectral/ansi ||  |    5.961e9 |           -0.00% |
> |                 spectral/atom ||  |    5.861e9 |           +0.01% |
> |               spectral/awards ||  |    8.744e9 |           +0.00% |
> |               spectral/banner ||  |    8.824e9 |           +0.23% |
> |                spectral/boyer ||  |    7.657e9 |           -0.00% |
> |               spectral/boyer2 ||  |    8.881e9 |           -0.00% |
> |             spectral/calendar ||  |    7.546e9 |           -0.00% |
> |             spectral/cichelli ||  |    8.625e9 |           +0.01% |
> |              spectral/circsim ||  |    6.850e9 |           +0.00% |
> |             spectral/clausify ||  |    6.223e9 |           -0.00% |
> |          spectral/constraints ||  |    8.314e9 |           +0.14% |
> |         spectral/cryptarithm1 ||  |    7.787e9 |           -0.00% |
> |         spectral/cryptarithm2 ||  |    6.761e9 |           +0.00% |
> |                  spectral/cse ||  |    6.358e9 |           -0.00% |
> |               spectral/dom-lt ||  |    7.774e9 |           -0.00% |
> |                spectral/eliza ||  |    8.273e9 |           +0.00% |
> |          spectral/exact-reals ||  |    5.597e9 |           +0.01% |
> |               spectral/expert ||  |    5.087e9 |           +0.04% |
> |                 spectral/fft2 ||  |    8.831e9 |           +0.31% |
> |             spectral/fibheaps ||  |    8.011e9 |           -0.00% |
> |                 spectral/fish ||  |    7.314e9 |           -0.00% |
> |                  spectral/gcd ||  |    6.386e9 |           -0.00% |
> | spectral/hartel/comp_lab_zift ||  |    8.717e9 |           -0.00% |
> |         spectral/hartel/event ||  |    9.071e9 |           -2.06% |
> |           spectral/hartel/fft ||  |    3.239e9 |           +0.00% |
> |        spectral/hartel/genfft ||  |   1.020e10 |           +0.00% |
> |           spectral/hartel/ida ||  |    5.413e9 |           -0.30% |
> |     spectral/hartel/listcompr ||  |    6.142e9 |           +0.02% |
> |      spectral/hartel/listcopy ||  |    6.757e9 |           +0.02% |
> |      spectral/hartel/nucleic2 ||  |    4.402e9 |           +0.00% |
> |       spectral/hartel/parstof ||  |    5.555e9 |           -0.00% |
> |         spectral/hartel/sched ||  |    5.800e9 |           +0.00% |
> |         spectral/hartel/solid ||  |    5.845e9 |           +0.24% |
> |     spectral/hartel/transform ||  |    5.709e9 |           -0.00% |
> |     spectral/hartel/typecheck ||  |    5.841e9 |           +0.00% |
> |          spectral/hartel/wang ||  |    8.731e9 |           +0.12% |
> |     spectral/hartel/wave4main ||  |    6.024e9 |           -0.00% |
> |              spectral/integer ||  |    7.068e9 |           -0.00% |
> |              spectral/knights ||  |    8.294e9 |           -0.00% |
> |               spectral/lambda ||  |    8.081e9 |           +0.00% |
> |           spectral/last-piece ||  |    1.878e9 |           +0.00% |
> |                 spectral/lcss ||  |    8.761e9 |           -0.00% |
> |                 spectral/life ||  |    9.136e9 |           -0.00% |
> |               spectral/mandel ||  |    7.037e9 |           +0.00% |
> |              spectral/mandel2 ||  |    3.957e9 |           +0.00% |
> |                 spectral/mate ||  |    7.565e9 |           +0.01% |
> |              spectral/minimax ||  |    8.649e9 |           -0.00% |
> |           spectral/multiplier ||  |    6.096e9 |           +0.00% |
> |                 spectral/para ||  |    6.561e9 |           +0.00% |
> |                spectral/power ||  |    6.749e9 |           -0.00% |
> |               spectral/pretty ||  | 851224.000 |           +0.17% |
> |            spectral/primetest ||  |    7.391e9 |           -0.00% |
> |               spectral/puzzle ||  |    6.401e9 |           +0.00% |
> |              spectral/rewrite ||  |    5.553e9 |           +0.67% |
> |                  spectral/scc ||  | 774059.000 |           +0.49% |
> |               spectral/simple ||  |   1.214e10 |           +0.01% |
> |              spectral/sorting ||  |    9.074e9 |           -0.00% |
> |               spectral/sphere ||  |    5.371e9 |           -0.00% |
> |             spectral/treejoin ||  |    9.768e9 |           +0.00% |
> +===============================++==+============+==================+
> |                     geom mean ||  |     +0.05% |                  |
> +-------------------------------++--+------------+------------------+
> 
> 
> 
> # LLC cache misses
> 
> +-------------------------------++--+-------------+------------------+
> |                               ||  |     master/ | callstack/ (rel) |
> +===============================++==+=============+==================+
> |          imaginary/bernouilli ||  |    4964.000 |           +1.37% |
> |        imaginary/digits-of-e1 ||  |    4863.000 |           -0.35% |
> |        imaginary/digits-of-e2 ||  |    4958.000 |           +1.63% |
> |              imaginary/exp3_8 ||  |    4513.000 |           +0.42% |
> |         imaginary/gen_regexps ||  |    4535.000 |           +0.09% |
> |           imaginary/integrate ||  |    4733.000 |           +1.08% |
> |               imaginary/kahan ||  |    4447.000 |           -0.13% |
> |           imaginary/paraffins ||  |    4826.000 |           -0.08% |
> |              imaginary/primes ||  |    4876.000 |           +0.94% |
> |              imaginary/queens ||  |    4541.000 |           -0.07% |
> |                imaginary/rfib ||  |    4485.000 |           -0.13% |
> |                 imaginary/tak ||  |    4461.000 |           +0.25% |
> |        imaginary/wheel-sieve1 ||  |    4865.000 |           +1.29% |
> |        imaginary/wheel-sieve2 ||  |    4893.000 |           +1.25% |
> |                imaginary/x2n1 ||  |    4630.000 |           +0.22% |
> |         parallel/blackscholes ||  |   12862.000 |           +0.30% |
> |                parallel/coins ||  | 6455583.000 |           +0.00% |
> |                 parallel/gray ||  |    6372.000 |           +1.77% |
> |               parallel/mandel ||  |  852468.000 |           -0.02% |
> |              parallel/matmult ||  |    4615.000 |           -0.30% |
> |              parallel/minimax ||  |    4617.000 |           +0.84% |
> |                parallel/nbody ||  |    4455.000 |           -0.04% |
> |               parallel/parfib ||  |    4528.000 |           +0.22% |
> |              parallel/partree ||  |    4627.000 |           +0.43% |
> |                 parallel/prsa ||  |    4619.000 |           +0.54% |
> |               parallel/queens ||  |    4528.000 |           +1.37% |
> |                  parallel/ray ||  |    4626.000 |           +0.35% |
> |             parallel/sumeuler ||  |    4446.000 |           +0.13% |
> |            parallel/transclos ||  |    4741.000 |           -0.17% |
> |                     real/anna ||  |    6443.000 |           +5.34% |
> |             real/ben-raytrace ||  |    6819.000 |           -0.13% |
> |                     real/bspt ||  |    5195.000 |           -0.21% |
> |                real/cacheprof ||  |    6734.000 |           +1.62% |
> |                 real/compress ||  |    4914.000 |           +0.53% |
> |                real/compress2 ||  |    4783.000 |           -0.25% |
> |                   real/eff/CS ||  |    4439.000 |           +0.38% |
> |                  real/eff/CSD ||  |    4446.000 |            0.00% |
> |                   real/eff/FS ||  |    4451.000 |           -0.04% |
> |                    real/eff/S ||  | 5619842.000 |           -0.00% |
> |                   real/eff/VS ||  | 1254362.000 |           +0.00% |
> |                  real/eff/VSD ||  |    4403.000 |           -0.43% |
> |                  real/eff/VSM ||  |    4445.000 |           -0.11% |
> |                      real/fem ||  |    4967.000 |           +2.07% |
> |                    real/fluid ||  |    6117.000 |           +0.85% |
> |                   real/fulsom ||  |    5060.000 |           -0.10% |
> |                   real/gamteb ||  |    5615.000 |           +0.64% |
> |                       real/gg ||  |    5242.000 |           +0.88% |
> |                     real/grep ||  |    4866.000 |           +0.62% |
> |                   real/hidden ||  |    5576.000 |           +2.06% |
> |                      real/hpg ||  |    5614.000 |           +2.92% |
> |                    real/infer ||  |    4833.000 |           -0.14% |
> |                     real/lift ||  |    4809.000 |           +1.48% |
> |                   real/linear ||  |    5368.000 |           +4.53% |
> |                 real/maillist ||  |   12942.000 |           +0.32% |
> |                  real/mkhprog ||  |    4483.000 |           +0.20% |
> |                   real/parser ||  |    5309.000 |           +1.64% |
> |                      real/pic ||  |    4937.000 |           +0.81% |
> |                   real/prolog ||  |    4843.000 |           +1.03% |
> |                  real/reptile ||  |    5548.000 |           -0.43% |
> |                      real/rsa ||  |    4667.000 |           +0.26% |
> |                      real/scs ||  |    5667.000 |           +1.48% |
> |                  real/smallpt ||  |    5836.000 |           +1.29% |
> |                   real/symalg ||  |    5422.000 |           +0.30% |
> |                  real/veritas ||  |    6984.000 |           +2.61% |
> |         shootout/binary-trees ||  |    5079.000 |           +0.73% |
> |       shootout/fannkuch-redux ||  |    4478.000 |           -0.51% |
> |                shootout/fasta ||  |    4625.000 |           -0.13% |
> |         shootout/k-nucleotide ||  | 1161663.000 |           -2.58% |
> |               shootout/n-body ||  |    4512.000 |           +0.04% |
> |             shootout/pidigits ||  |    4651.000 |           -0.39% |
> |   shootout/reverse-complement ||  |    4416.000 |            0.00% |
> |        shootout/spectral-norm ||  |    4477.000 |           +0.25% |
> |               smp/callback001 ||  |  488453.000 |           -0.01% |
> |               smp/callback002 ||  |    4513.000 |           -0.11% |
> |                      smp/chan ||  |     1.110e7 |           +7.03% |
> |                     smp/sieve ||  |    4555.000 |           +0.72% |
> |                smp/threads001 ||  |    4481.000 |           +0.49% |
> |                smp/threads003 ||  |   83898.000 |           -1.63% |
> |                smp/threads006 ||  | 1804659.000 |           +0.49% |
> |                smp/threads007 ||  | 2427701.000 |           -0.24% |
> |                 spectral/ansi ||  |    4759.000 |           +0.27% |
> |                 spectral/atom ||  |    4691.000 |           +0.62% |
> |               spectral/awards ||  |    4717.000 |           +1.14% |
> |               spectral/banner ||  |    5056.000 |           +1.21% |
> |                spectral/boyer ||  |    5045.000 |           +0.06% |
> |               spectral/boyer2 ||  |    4832.000 |           -0.04% |
> |             spectral/calendar ||  |    4622.000 |           +0.74% |
> |             spectral/cichelli ||  |    4728.000 |           +1.67% |
> |              spectral/circsim ||  |   40269.000 |           -1.55% |
> |             spectral/clausify ||  |    4835.000 |           -0.17% |
> |          spectral/constraints ||  |    4871.000 |           +1.44% |
> |         spectral/cryptarithm1 ||  |    4562.000 |           +0.18% |
> |         spectral/cryptarithm2 ||  |    4600.000 |           +0.07% |
> |                  spectral/cse ||  |    4534.000 |           +0.33% |
> |               spectral/dom-lt ||  |    5179.000 |           +0.10% |
> |                spectral/eliza ||  |    4968.000 |           +0.34% |
> |          spectral/exact-reals ||  |    4840.000 |           +1.34% |
> |               spectral/expert ||  |    4770.000 |           +2.81% |
> |                 spectral/fft2 ||  |    5296.000 |           +1.91% |
> |             spectral/fibheaps ||  |    4858.000 |           +0.02% |
> |                 spectral/fish ||  |    4687.000 |           +0.04% |
> |                  spectral/gcd ||  |    4575.000 |           +0.22% |
> | spectral/hartel/comp_lab_zift ||  |    4960.000 |           +0.58% |
> |         spectral/hartel/event ||  |    4875.000 |           +0.96% |
> |           spectral/hartel/fft ||  |    5121.000 |           +0.70% |
> |        spectral/hartel/genfft ||  |    4875.000 |           +0.04% |
> |           spectral/hartel/ida ||  |    4877.000 |           +0.84% |
> |     spectral/hartel/listcompr ||  |    4651.000 |           +1.76% |
> |      spectral/hartel/listcopy ||  |    4649.000 |           +1.96% |
> |      spectral/hartel/nucleic2 ||  |    5998.000 |           +0.68% |
> |       spectral/hartel/parstof ||  |    5583.000 |           -0.05% |
> |         spectral/hartel/sched ||  |    4856.000 |           -0.23% |
> |         spectral/hartel/solid ||  |    5282.000 |           +1.21% |
> |     spectral/hartel/transform ||  |    4875.000 |           +1.56% |
> |     spectral/hartel/typecheck ||  |    4724.000 |           +0.95% |
> |          spectral/hartel/wang ||  |    4993.000 |           +2.38% |
> |     spectral/hartel/wave4main ||  |    4877.000 |           -0.04% |
> |              spectral/integer ||  |    4619.000 |           -0.13% |
> |              spectral/knights ||  |    4694.000 |           +0.58% |
> |               spectral/lambda ||  |    4984.000 |           +0.66% |
> |           spectral/last-piece ||  |    4869.000 |           -0.21% |
> |                 spectral/lcss ||  |    4876.000 |           +0.04% |
> |                 spectral/life ||  |    4884.000 |           +1.29% |
> |               spectral/mandel ||  |    4900.000 |           +0.16% |
> |              spectral/mandel2 ||  |    4479.000 |           -0.13% |
> |                 spectral/mate ||  |    5086.000 |           +1.83% |
> |              spectral/minimax ||  |    4605.000 |           -0.04% |
> |           spectral/multiplier ||  |    4672.000 |           +0.98% |
> |                 spectral/para ||  |    4935.000 |           +0.83% |
> |                spectral/power ||  |    4918.000 |           +0.18% |
> |               spectral/pretty ||  |    4432.000 |           +0.14% |
> |            spectral/primetest ||  |    5021.000 |           -0.04% |
> |               spectral/puzzle ||  |    4603.000 |           +0.04% |
> |              spectral/rewrite ||  |    4618.000 |           +0.97% |
> |                  spectral/scc ||  |    4415.000 |           +0.34% |
> |               spectral/simple ||  | 2413361.000 |           -1.18% |
> |              spectral/sorting ||  |    5357.000 |           -1.55% |
> |               spectral/sphere ||  |    5717.000 |           +0.84% |
> |             spectral/treejoin ||  |    5130.000 |           +0.02% |
> +===============================++==+=============+==================+
> |                     geom mean ||  |      +0.58% |                  |
> +-------------------------------++--+-------------+------------------+
> 
> 
> 
> # L1 cache misses
> 
> +-------------------------------++--+-------------+------------------+
> |                               ||  |     master/ | callstack/ (rel) |
> +===============================++==+=============+==================+
> |          imaginary/bernouilli ||  |     4.235e7 |           +0.13% |
> |        imaginary/digits-of-e1 ||  | 3708507.000 |           -0.06% |
> |        imaginary/digits-of-e2 ||  |     2.913e7 |           -0.16% |
> |              imaginary/exp3_8 ||  |     1.881e8 |           -0.07% |
> |         imaginary/gen_regexps ||  |     2.915e7 |           -0.05% |
> |           imaginary/integrate ||  | 1341520.000 |           -4.99% |
> |               imaginary/kahan ||  |    7577.000 |           +0.15% |
> |           imaginary/paraffins ||  |     5.994e7 |           -0.02% |
> |              imaginary/primes ||  |     1.165e8 |           -0.01% |
> |              imaginary/queens ||  |  315321.000 |           -0.94% |
> |                imaginary/rfib ||  |    7833.000 |           -0.46% |
> |                 imaginary/tak ||  |    7688.000 |           +0.03% |
> |        imaginary/wheel-sieve1 ||  | 7508229.000 |           +0.51% |
> |        imaginary/wheel-sieve2 ||  |     4.338e7 |           -0.02% |
> |                imaginary/x2n1 ||  |  129793.000 |           +0.50% |
> |         parallel/blackscholes ||  |     1.550e7 |           -0.16% |
> |                parallel/coins ||  |     3.952e7 |           +0.26% |
> |                 parallel/gray ||  |     1.736e7 |           +1.38% |
> |               parallel/mandel ||  |     1.356e7 |           +0.20% |
> |              parallel/matmult ||  |     5.267e8 |           -0.01% |
> |              parallel/minimax ||  |     1.140e8 |           -0.14% |
> |                parallel/nbody ||  |     1.248e7 |           -0.02% |
> |               parallel/parfib ||  |  252463.000 |           +6.49% |
> |              parallel/partree ||  |     5.642e7 |           +0.08% |
> |                 parallel/prsa ||  | 5700667.000 |           +0.27% |
> |               parallel/queens ||  | 3129546.000 |           +0.19% |
> |                  parallel/ray ||  |     1.260e7 |           +4.27% |
> |             parallel/sumeuler ||  |   35221.000 |           -0.07% |
> |            parallel/transclos ||  |     1.863e7 |           +0.17% |
> |                     real/anna ||  |     3.737e7 |           +0.10% |
> |             real/ben-raytrace ||  |     6.695e7 |           +0.59% |
> |                     real/bspt ||  |     1.492e8 |           +0.01% |
> |                real/cacheprof ||  |     5.661e7 |           -0.24% |
> |                 real/compress ||  |     3.247e7 |           -2.71% |
> |                real/compress2 ||  |     2.717e7 |           +0.13% |
> |                   real/eff/CS ||  |   54141.000 |           -0.28% |
> |                  real/eff/CSD ||  |  532877.000 |           -0.07% |
> |                   real/eff/FS ||  |  512883.000 |           +0.18% |
> |                    real/eff/S ||  |     1.412e7 |           -0.07% |
> |                   real/eff/VS ||  | 6730192.000 |           -0.42% |
> |                  real/eff/VSD ||  |    7449.000 |           -0.30% |
> |                  real/eff/VSM ||  |  121912.000 |           -0.22% |
> |                      real/fem ||  |     3.841e7 |           +6.86% |
> |                    real/fluid ||  |     1.579e7 |           +0.91% |
> |                   real/fulsom ||  |     1.036e7 |           +0.03% |
> |                   real/gamteb ||  |     3.473e7 |           -0.02% |
> |                       real/gg ||  |     7.439e7 |           +0.09% |
> |                     real/grep ||  |     7.940e7 |           +0.08% |
> |                   real/hidden ||  |     1.074e7 |           +0.20% |
> |                      real/hpg ||  |     1.757e7 |           +0.32% |
> |                    real/infer ||  |     2.006e8 |           -0.02% |
> |                     real/lift ||  |     2.741e7 |           +0.20% |
> |                   real/linear ||  |     8.899e7 |           +1.27% |
> |                 real/maillist ||  | 9646364.000 |           -0.06% |
> |                  real/mkhprog ||  |   11950.000 |           +3.72% |
> |                   real/parser ||  |     1.269e7 |           +0.92% |
> |                      real/pic ||  |     4.450e7 |           -0.24% |
> |                   real/prolog ||  |     2.973e7 |           -0.34% |
> |                  real/reptile ||  |     1.945e7 |           -0.07% |
> |                      real/rsa ||  | 1310283.000 |           -0.18% |
> |                      real/scs ||  |     1.916e7 |           +0.06% |
> |                  real/smallpt ||  | 7088127.000 |           +0.47% |
> |                   real/symalg ||  | 5981494.000 |           -0.11% |
> |                  real/veritas ||  |     1.860e7 |           -1.22% |
> |         shootout/binary-trees ||  |     3.661e7 |           +0.01% |
> |       shootout/fannkuch-redux ||  |    7741.000 |           -0.62% |
> |                shootout/fasta ||  |     5.215e7 |           +0.01% |
> |         shootout/k-nucleotide ||  |     1.247e7 |           +0.01% |
> |               shootout/n-body ||  |    8025.000 |           +0.04% |
> |             shootout/pidigits ||  |     2.316e8 |           +0.02% |
> |   shootout/reverse-complement ||  |    7627.000 |           -0.20% |
> |        shootout/spectral-norm ||  |   21764.000 |           +0.23% |
> |               smp/callback001 ||  | 5824201.000 |           +0.07% |
> |               smp/callback002 ||  | 8288204.000 |           -0.09% |
> |                      smp/chan ||  |     2.846e7 |           +2.62% |
> |                     smp/sieve ||  |     5.400e7 |           -1.10% |
> |                smp/threads001 ||  |     2.312e7 |           +0.45% |
> |                smp/threads003 ||  |     4.773e7 |           -0.22% |
> |                smp/threads006 ||  | 9331792.000 |           +0.02% |
> |                smp/threads007 ||  |     2.721e7 |           +0.36% |
> |                 spectral/ansi ||  |     6.940e7 |           -0.01% |
> |                 spectral/atom ||  |     1.248e8 |           +0.01% |
> |               spectral/awards ||  | 7810137.000 |           -1.82% |
> |               spectral/banner ||  |     3.727e7 |           +2.57% |
> |                spectral/boyer ||  |     2.284e7 |           -0.19% |
> |               spectral/boyer2 ||  |     3.926e7 |           -0.63% |
> |             spectral/calendar ||  | 7366268.000 |           -0.91% |
> |             spectral/cichelli ||  |     1.797e7 |           +0.02% |
> |              spectral/circsim ||  |     9.138e7 |           +0.07% |
> |             spectral/clausify ||  | 6134801.000 |           -0.11% |
> |          spectral/constraints ||  |     2.950e7 |           +0.38% |
> |         spectral/cryptarithm1 ||  | 3139494.000 |           +0.08% |
> |         spectral/cryptarithm2 ||  | 3481535.000 |           +0.35% |
> |                  spectral/cse ||  | 4798864.000 |           -7.01% |
> |               spectral/dom-lt ||  |     2.556e7 |           -0.11% |
> |                spectral/eliza ||  |     1.921e7 |           +1.14% |
> |          spectral/exact-reals ||  | 2391927.000 |           +1.24% |
> |               spectral/expert ||  |     2.311e7 |           -0.08% |
> |                 spectral/fft2 ||  |     1.917e8 |           +0.81% |
> |             spectral/fibheaps ||  |     5.236e7 |           -0.06% |
> |                 spectral/fish ||  | 8017906.000 |           +0.13% |
> |                  spectral/gcd ||  | 1652038.000 |           +0.07% |
> | spectral/hartel/comp_lab_zift ||  |     6.167e7 |           -0.11% |
> |         spectral/hartel/event ||  |     4.857e7 |           -2.47% |
> |           spectral/hartel/fft ||  |     3.723e7 |           -0.04% |
> |        spectral/hartel/genfft ||  |     2.201e7 |           +1.31% |
> |           spectral/hartel/ida ||  |     1.316e7 |           +0.16% |
> |     spectral/hartel/listcompr ||  | 9143834.000 |           +1.54% |
> |      spectral/hartel/listcopy ||  |     1.018e7 |           +2.27% |
> |      spectral/hartel/nucleic2 ||  |     1.035e7 |           -2.83% |
> |       spectral/hartel/parstof ||  |     2.290e7 |           -2.36% |
> |         spectral/hartel/sched ||  | 6090930.000 |           -0.15% |
> |         spectral/hartel/solid ||  |     3.408e7 |           +0.00% |
> |     spectral/hartel/transform ||  |     2.255e7 |           +0.25% |
> |     spectral/hartel/typecheck ||  |     1.447e7 |           -1.37% |
> |          spectral/hartel/wang ||  |     1.089e8 |           +0.19% |
> |     spectral/hartel/wave4main ||  |     8.229e7 |           +0.29% |
> |              spectral/integer ||  | 1101168.000 |           -0.06% |
> |              spectral/knights ||  |     3.424e7 |           +0.92% |
> |               spectral/lambda ||  |     6.667e7 |           +0.14% |
> |           spectral/last-piece ||  | 3620219.000 |           -0.43% |
> |                 spectral/lcss ||  |     7.252e7 |           -0.26% |
> |                 spectral/life ||  |     1.231e8 |           -0.11% |
> |               spectral/mandel ||  |  741678.000 |           +0.09% |
> |              spectral/mandel2 ||  |  311375.000 |           +0.79% |
> |                 spectral/mate ||  | 4858523.000 |           -1.23% |
> |              spectral/minimax ||  | 1172869.000 |           +0.51% |
> |           spectral/multiplier ||  |     1.060e8 |           +0.03% |
> |                 spectral/para ||  |     5.089e7 |           +0.15% |
> |                spectral/power ||  |     4.488e7 |           -0.00% |
> |               spectral/pretty ||  |    7649.000 |           +0.38% |
> |            spectral/primetest ||  |  500918.000 |           +1.32% |
> |               spectral/puzzle ||  | 3210919.000 |           -0.09% |
> |              spectral/rewrite ||  |  825290.000 |           -7.73% |
> |                  spectral/scc ||  |    7483.000 |           +0.16% |
> |               spectral/simple ||  |     8.786e7 |           +0.01% |
> |              spectral/sorting ||  |     1.261e8 |           -0.02% |
> |               spectral/sphere ||  | 4854033.000 |           +0.43% |
> |             spectral/treejoin ||  |     8.455e7 |           +0.03% |
> +===============================++==+=============+==================+
> |                     geom mean ||  |      +0.03% |                  |
> +-------------------------------++--+-------------+------------------+
> 
> 
> # perf instructions
> 
> +-------------------------------++--+-------------+------------------+
> |                               ||  |     master/ | callstack/ (rel) |
> +===============================++==+=============+==================+
> |          imaginary/bernouilli ||  |     7.085e9 |           -0.22% |
> |        imaginary/digits-of-e1 ||  |     5.547e9 |           -0.03% |
> |        imaginary/digits-of-e2 ||  |     5.549e9 |           -0.06% |
> |              imaginary/exp3_8 ||  |     8.785e9 |           -0.06% |
> |         imaginary/gen_regexps ||  |     8.650e9 |           -0.04% |
> |           imaginary/integrate ||  |     6.260e9 |           +0.20% |
> |               imaginary/kahan ||  |     6.699e9 |           +0.16% |
> |           imaginary/paraffins ||  |     8.112e9 |           -0.24% |
> |              imaginary/primes ||  |     8.244e9 |           -0.24% |
> |              imaginary/queens ||  |    1.009e10 |           +0.04% |
> |                imaginary/rfib ||  |     5.298e9 |           +0.14% |
> |                 imaginary/tak ||  |     5.861e9 |           +0.10% |
> |        imaginary/wheel-sieve1 ||  |     6.662e9 |           -0.76% |
> |        imaginary/wheel-sieve2 ||  |     6.278e9 |           +0.38% |
> |                imaginary/x2n1 ||  |     7.453e9 |           -0.12% |
> |         parallel/blackscholes ||  |     8.096e9 |           -0.18% |
> |                parallel/coins ||  |    1.194e10 |           -0.03% |
> |                 parallel/gray ||  |     6.154e9 |           -0.07% |
> |               parallel/mandel ||  |    3.293e10 |           +0.12% |
> |              parallel/matmult ||  |    1.118e10 |           +0.06% |
> |              parallel/minimax ||  |    3.867e10 |           -0.11% |
> |                parallel/nbody ||  |     7.934e8 |           +0.05% |
> |               parallel/parfib ||  |    2.232e10 |           -0.01% |
> |              parallel/partree ||  |     7.358e9 |           +0.02% |
> |                 parallel/prsa ||  |    1.808e10 |           +0.14% |
> |               parallel/queens ||  |    1.037e10 |           -0.03% |
> |                  parallel/ray ||  |    1.301e10 |           +0.01% |
> |             parallel/sumeuler ||  |     3.487e9 |           -0.01% |
> |            parallel/transclos ||  |    1.983e10 |           -0.02% |
> |                     real/anna ||  |     5.334e9 |           +0.27% |
> |             real/ben-raytrace ||  |    1.216e11 |           -0.02% |
> |                     real/bspt ||  |     9.224e9 |           -0.05% |
> |                real/cacheprof ||  |     6.735e9 |           -0.46% |
> |                 real/compress ||  |     5.810e9 |           +0.07% |
> |                real/compress2 ||  |     4.580e9 |           -0.21% |
> |                   real/eff/CS ||  |     7.582e8 |           +1.19% |
> |                  real/eff/CSD ||  |     3.758e9 |           -0.56% |
> |                   real/eff/FS ||  |     2.792e9 |           +0.02% |
> |                    real/eff/S ||  |     4.760e9 |           -0.60% |
> |                   real/eff/VS ||  |     2.285e9 |           +0.20% |
> |                  real/eff/VSD ||  |     8.315e7 |           +0.02% |
> |                  real/eff/VSM ||  |     9.480e8 |           +1.48% |
> |                      real/fem ||  |     6.641e9 |           -0.53% |
> |                    real/fluid ||  |     3.914e9 |           +0.00% |
> |                   real/fulsom ||  |     2.497e9 |           -0.22% |
> |                   real/gamteb ||  |    1.013e10 |           -0.01% |
> |                       real/gg ||  |     7.243e9 |           +0.12% |
> |                     real/grep ||  |     7.563e9 |           -0.10% |
> |                   real/hidden ||  |     7.209e9 |           +1.57% |
> |                      real/hpg ||  |     4.982e9 |           +0.91% |
> |                    real/infer ||  |     8.312e9 |           +0.11% |
> |                     real/lift ||  |     4.441e9 |           -0.18% |
> |                   real/linear ||  |     8.438e9 |           +1.90% |
> |                 real/maillist ||  |     4.297e9 |           -0.94% |
> |                  real/mkhprog ||  |     2.874e7 |           -0.06% |
> |                   real/parser ||  |     5.177e9 |           +0.14% |
> |                      real/pic ||  |     3.265e9 |           +0.10% |
> |                   real/prolog ||  |     5.755e9 |           -0.18% |
> |                  real/reptile ||  |     6.050e9 |           +0.07% |
> |                      real/rsa ||  |     7.177e9 |           +0.03% |
> |                      real/scs ||  |     6.184e9 |           -0.23% |
> |                  real/smallpt ||  |    1.129e10 |           -0.16% |
> |                   real/symalg ||  |     8.247e9 |           -0.14% |
> |                  real/veritas ||  |     4.833e9 |           -0.01% |
> |         shootout/binary-trees ||  |    1.071e10 |           +0.12% |
> |       shootout/fannkuch-redux ||  |    1.912e10 |           +0.12% |
> |                shootout/fasta ||  |     4.273e9 |           -0.50% |
> |         shootout/k-nucleotide ||  |     4.227e9 |           -1.34% |
> |               shootout/n-body ||  |     3.725e9 |           -0.23% |
> |             shootout/pidigits ||  |     8.095e9 |           -0.04% |
> |   shootout/reverse-complement ||  | 3245583.000 |           -2.41% |
> |        shootout/spectral-norm ||  |     4.238e9 |           -0.15% |
> |               smp/callback001 ||  |     1.601e9 |           +0.55% |
> |               smp/callback002 ||  |     2.619e9 |           +0.19% |
> |                      smp/chan ||  |     7.817e9 |           -0.01% |
> |                     smp/sieve ||  |     2.361e9 |           +0.85% |
> |                smp/threads001 ||  |     5.145e9 |           +0.17% |
> |                smp/threads003 ||  |     2.922e9 |           -0.06% |
> |                smp/threads006 ||  |     1.081e9 |           +4.82% |
> |                smp/threads007 ||  |     4.328e9 |           +0.63% |
> |                 spectral/ansi ||  |     5.961e9 |           +0.21% |
> |                 spectral/atom ||  |     5.864e9 |           -0.10% |
> |               spectral/awards ||  |     8.749e9 |           -0.02% |
> |               spectral/banner ||  |     8.862e9 |           +0.12% |
> |                spectral/boyer ||  |     7.669e9 |           -0.09% |
> |               spectral/boyer2 ||  |     8.888e9 |           +0.04% |
> |             spectral/calendar ||  |     7.541e9 |           +0.13% |
> |             spectral/cichelli ||  |     8.675e9 |           -0.17% |
> |              spectral/circsim ||  |     6.901e9 |           +0.12% |
> |             spectral/clausify ||  |     6.227e9 |           -0.09% |
> |          spectral/constraints ||  |     8.308e9 |           +0.36% |
> |         spectral/cryptarithm1 ||  |     7.804e9 |           -0.23% |
> |         spectral/cryptarithm2 ||  |     6.757e9 |           +0.11% |
> |                  spectral/cse ||  |     6.357e9 |           +0.01% |
> |               spectral/dom-lt ||  |     7.774e9 |           +0.17% |
> |                spectral/eliza ||  |     8.279e9 |           -0.12% |
> |          spectral/exact-reals ||  |     5.599e9 |           -0.07% |
> |               spectral/expert ||  |     5.096e9 |           -0.09% |
> |                 spectral/fft2 ||  |     8.818e9 |           +0.48% |
> |             spectral/fibheaps ||  |     8.019e9 |           -0.12% |
> |                 spectral/fish ||  |     7.319e9 |           -0.03% |
> |                  spectral/gcd ||  |     6.381e9 |           +0.26% |
> | spectral/hartel/comp_lab_zift ||  |     8.747e9 |           -0.45% |
> |         spectral/hartel/event ||  |     9.153e9 |           -1.50% |
> |           spectral/hartel/fft ||  |     3.237e9 |           -0.02% |
> |        spectral/hartel/genfft ||  |    1.020e10 |           +0.14% |
> |           spectral/hartel/ida ||  |     5.420e9 |           -0.32% |
> |     spectral/hartel/listcompr ||  |     6.143e9 |           +0.12% |
> |      spectral/hartel/listcopy ||  |     6.759e9 |           +0.01% |
> |      spectral/hartel/nucleic2 ||  |     4.413e9 |           -0.67% |
> |       spectral/hartel/parstof ||  |     5.552e9 |           +0.04% |
> |         spectral/hartel/sched ||  |     5.807e9 |           -0.02% |
> |         spectral/hartel/solid ||  |     5.850e9 |           +0.22% |
> |     spectral/hartel/transform ||  |     5.713e9 |           -0.01% |
> |     spectral/hartel/typecheck ||  |     5.844e9 |           -0.04% |
> |          spectral/hartel/wang ||  |     8.727e9 |           +0.29% |
> |     spectral/hartel/wave4main ||  |     6.034e9 |           -0.20% |
> |              spectral/integer ||  |     7.048e9 |           +0.64% |
> |              spectral/knights ||  |     8.310e9 |           -0.08% |
> |               spectral/lambda ||  |     8.091e9 |           -0.12% |
> |           spectral/last-piece ||  |     1.877e9 |           +0.11% |
> |                 spectral/lcss ||  |     8.776e9 |           -0.10% |
> |                 spectral/life ||  |     9.143e9 |           -0.05% |
> |               spectral/mandel ||  |     7.015e9 |           +0.24% |
> |              spectral/mandel2 ||  |     3.957e9 |           +0.03% |
> |                 spectral/mate ||  |     7.573e9 |           +0.11% |
> |              spectral/minimax ||  |     8.645e9 |           +0.10% |
> |           spectral/multiplier ||  |     6.097e9 |           +0.06% |
> |                 spectral/para ||  |     6.562e9 |           +0.03% |
> |                spectral/power ||  |     6.758e9 |           -0.23% |
> |               spectral/pretty ||  | 3371581.000 |           -0.75% |
> |            spectral/primetest ||  |     7.409e9 |           -0.04% |
> |               spectral/puzzle ||  |     6.405e9 |           -0.19% |
> |              spectral/rewrite ||  |     5.558e9 |           +0.62% |
> |                  spectral/scc ||  | 3244220.000 |           -1.55% |
> |               spectral/simple ||  |    1.220e10 |           +0.25% |
> |              spectral/sorting ||  |     9.082e9 |           -0.05% |
> |               spectral/sphere ||  |     5.371e9 |           -0.18% |
> |             spectral/treejoin ||  |     9.881e9 |           -0.07% |
> +===============================++==+=============+==================+
> |                     geom mean ||  |      +0.02% |                  |
> +-------------------------------++--+-------------+------------------+
> 
> 
> 
> # perf cycles
> 
> +-------------------------------++--+-------------+------------------+
> |                               ||  |     master/ | callstack/ (rel) |
> +===============================++==+=============+==================+
> |          imaginary/bernouilli ||  |     3.726e9 |           +0.96% |
> |        imaginary/digits-of-e1 ||  |     2.561e9 |           +3.96% |
> |        imaginary/digits-of-e2 ||  |     2.828e9 |           -1.96% |
> |              imaginary/exp3_8 ||  |     3.231e9 |           +2.40% |
> |         imaginary/gen_regexps ||  |     4.250e9 |           +0.26% |
> |           imaginary/integrate ||  |     2.968e9 |           -9.55% |
> |               imaginary/kahan ||  |     3.062e9 |           -0.40% |
> |           imaginary/paraffins ||  |     3.083e9 |           -1.94% |
> |              imaginary/primes ||  |     2.593e9 |           +1.49% |
> |              imaginary/queens ||  |     4.713e9 |           -0.75% |
> |                imaginary/rfib ||  |     3.942e9 |           -0.09% |
> |                 imaginary/tak ||  |     4.385e9 |           -0.60% |
> |        imaginary/wheel-sieve1 ||  |     4.582e9 |          -43.27% |
> |        imaginary/wheel-sieve2 ||  |     2.563e9 |           -2.37% |
> |                imaginary/x2n1 ||  |     2.867e9 |           +0.10% |
> |         parallel/blackscholes ||  |     4.854e9 |           -1.40% |
> |                parallel/coins ||  |     4.809e9 |           -0.08% |
> |                 parallel/gray ||  |     3.600e9 |           +2.96% |
> |               parallel/mandel ||  |    1.481e10 |           -1.08% |
> |              parallel/matmult ||  |    1.570e10 |           -2.83% |
> |              parallel/minimax ||  |    2.420e10 |           +7.85% |
> |                parallel/nbody ||  |     4.377e8 |           +1.37% |
> |               parallel/parfib ||  |    1.752e10 |           +0.16% |
> |              parallel/partree ||  |     3.345e9 |           +2.19% |
> |                 parallel/prsa ||  |     7.052e9 |           +6.03% |
> |               parallel/queens ||  |     4.686e9 |           +0.06% |
> |                  parallel/ray ||  |     9.246e9 |           -2.73% |
> |             parallel/sumeuler ||  |     4.166e9 |           -1.20% |
> |            parallel/transclos ||  |    1.095e10 |           +1.05% |
> |                     real/anna ||  |     5.456e9 |           -0.28% |
> |             real/ben-raytrace ||  |    6.268e10 |           +2.87% |
> |                     real/bspt ||  |     3.695e9 |           -0.12% |
> |                real/cacheprof ||  |     3.822e9 |           +5.28% |
> |                 real/compress ||  |     2.389e9 |           -0.41% |
> |                real/compress2 ||  |     3.284e9 |           -4.00% |
> |                   real/eff/CS ||  |     1.825e8 |           +0.07% |
> |                  real/eff/CSD ||  |     1.185e9 |           -0.92% |
> |                   real/eff/FS ||  |     9.959e8 |           +8.14% |
> |                    real/eff/S ||  |     2.161e9 |           +3.14% |
> |                   real/eff/VS ||  |     9.353e8 |           -4.17% |
> |                  real/eff/VSD ||  |     2.326e7 |           +3.42% |
> |                  real/eff/VSM ||  |     3.006e8 |          -15.15% |
> |                      real/fem ||  |     3.274e9 |           -5.66% |
> |                    real/fluid ||  |     3.224e9 |           -2.00% |
> |                   real/fulsom ||  |     1.922e9 |           -1.85% |
> |                   real/gamteb ||  |     5.555e9 |           -0.95% |
> |                       real/gg ||  |     3.717e9 |           +6.49% |
> |                     real/grep ||  |     3.266e9 |           -4.20% |
> |                   real/hidden ||  |     5.666e9 |           -6.63% |
> |                      real/hpg ||  |     3.082e9 |           +8.56% |
> |                    real/infer ||  |     4.526e9 |           +4.02% |
> |                     real/lift ||  |     3.450e9 |           -0.91% |
> |                   real/linear ||  |     6.195e9 |           -3.28% |
> |                 real/maillist ||  |     3.815e9 |           -3.44% |
> |                  real/mkhprog ||  |     1.859e7 |           -4.29% |
> |                   real/parser ||  |     3.315e9 |           +1.96% |
> |                      real/pic ||  |     2.259e9 |           -2.02% |
> |                   real/prolog ||  |     4.197e9 |           +0.39% |
> |                  real/reptile ||  |     3.234e9 |           -1.87% |
> |                      real/rsa ||  |     2.852e9 |           -1.52% |
> |                      real/scs ||  |     2.870e9 |           -2.91% |
> |                  real/smallpt ||  |     7.328e9 |           +0.78% |
> |                   real/symalg ||  |     3.427e9 |           +0.10% |
> |                  real/veritas ||  |     2.909e9 |           +0.50% |
> |         shootout/binary-trees ||  |     5.018e9 |           -0.06% |
> |       shootout/fannkuch-redux ||  |    1.014e10 |           -2.68% |
> |                shootout/fasta ||  |     2.439e9 |           +1.45% |
> |         shootout/k-nucleotide ||  |     3.488e9 |           +4.66% |
> |               shootout/n-body ||  |     2.098e9 |           -0.03% |
> |             shootout/pidigits ||  |     3.265e9 |           -0.18% |
> |   shootout/reverse-complement ||  | 3311908.000 |           -6.15% |
> |        shootout/spectral-norm ||  |     1.525e9 |           +0.62% |
> |               smp/callback001 ||  |     8.318e8 |           +9.35% |
> |               smp/callback002 ||  |     1.337e9 |           +5.34% |
> |                      smp/chan ||  |     3.236e9 |           -0.99% |
> |                     smp/sieve ||  |     7.368e8 |           -0.27% |
> |                smp/threads001 ||  |     2.874e9 |           -0.77% |
> |                smp/threads003 ||  |     1.841e9 |           -0.36% |
> |                smp/threads006 ||  |     1.144e9 |           +2.09% |
> |                smp/threads007 ||  |     3.534e9 |           +3.85% |
> |                 spectral/ansi ||  |     1.973e9 |           -2.41% |
> |                 spectral/atom ||  |     2.944e9 |           -0.80% |
> |               spectral/awards ||  |     5.452e9 |          -11.68% |
> |               spectral/banner ||  |     4.185e9 |           -0.68% |
> |                spectral/boyer ||  |     4.195e9 |           -1.23% |
> |               spectral/boyer2 ||  |     4.586e9 |           -1.21% |
> |             spectral/calendar ||  |     3.726e9 |           -1.97% |
> |             spectral/cichelli ||  |     4.325e9 |           -0.26% |
> |              spectral/circsim ||  |     5.746e9 |           -0.23% |
> |             spectral/clausify ||  |     3.735e9 |           +0.10% |
> |          spectral/constraints ||  |     5.202e9 |           +2.10% |
> |         spectral/cryptarithm1 ||  |     3.909e9 |           -4.03% |
> |         spectral/cryptarithm2 ||  |     3.759e9 |           -1.27% |
> |                  spectral/cse ||  |     4.564e9 |           -2.83% |
> |               spectral/dom-lt ||  |     4.830e9 |           -0.05% |
> |                spectral/eliza ||  |     4.631e9 |           -6.18% |
> |          spectral/exact-reals ||  |     3.471e9 |           -0.08% |
> |               spectral/expert ||  |     4.020e9 |           -1.27% |
> |                 spectral/fft2 ||  |     4.706e9 |           -1.71% |
> |             spectral/fibheaps ||  |     4.492e9 |           +0.55% |
> |                 spectral/fish ||  |     4.004e9 |           +3.76% |
> |                  spectral/gcd ||  |     3.413e9 |           -2.86% |
> | spectral/hartel/comp_lab_zift ||  |     5.377e9 |           +4.10% |
> |         spectral/hartel/event ||  |     5.456e9 |           -1.84% |
> |           spectral/hartel/fft ||  |     1.732e9 |           +0.20% |
> |        spectral/hartel/genfft ||  |     5.124e9 |           +2.82% |
> |           spectral/hartel/ida ||  |     4.414e9 |           +2.00% |
> |     spectral/hartel/listcompr ||  |     3.458e9 |           +3.84% |
> |      spectral/hartel/listcopy ||  |     3.776e9 |           -4.30% |
> |      spectral/hartel/nucleic2 ||  |     4.137e9 |           +4.49% |
> |       spectral/hartel/parstof ||  |     4.609e9 |           -0.54% |
> |         spectral/hartel/sched ||  |     4.245e9 |           -0.19% |
> |         spectral/hartel/solid ||  |     3.587e9 |           +1.04% |
> |     spectral/hartel/transform ||  |     3.793e9 |           +4.13% |
> |     spectral/hartel/typecheck ||  |     4.627e9 |           -1.51% |
> |          spectral/hartel/wang ||  |     4.369e9 |           -1.01% |
> |     spectral/hartel/wave4main ||  |     4.844e9 |           -5.68% |
> |              spectral/integer ||  |     3.150e9 |           -5.21% |
> |              spectral/knights ||  |     4.198e9 |          +21.03% |
> |               spectral/lambda ||  |     3.534e9 |           +1.90% |
> |           spectral/last-piece ||  |     1.134e9 |           +0.65% |
> |                 spectral/lcss ||  |     3.905e9 |           -0.64% |
> |                 spectral/life ||  |     5.646e9 |           -6.52% |
> |               spectral/mandel ||  |     3.529e9 |           -6.31% |
> |              spectral/mandel2 ||  |     2.570e9 |           -0.24% |
> |                 spectral/mate ||  |     5.761e9 |           +4.42% |
> |              spectral/minimax ||  |     4.569e9 |           -1.24% |
> |           spectral/multiplier ||  |     3.060e9 |           +6.04% |
> |                 spectral/para ||  |     4.232e9 |           +1.90% |
> |                spectral/power ||  |     3.808e9 |           -1.38% |
> |               spectral/pretty ||  | 3403388.000 |          -22.39% |
> |            spectral/primetest ||  |     3.203e9 |           -4.45% |
> |               spectral/puzzle ||  |     4.362e9 |           -0.34% |
> |              spectral/rewrite ||  |     3.840e9 |           +4.16% |
> |                  spectral/scc ||  | 3133857.000 |           +1.57% |
> |               spectral/simple ||  |     7.219e9 |           -1.59% |
> |              spectral/sorting ||  |     4.285e9 |           -0.29% |
> |               spectral/sphere ||  |     3.674e9 |           -3.88% |
> |             spectral/treejoin ||  |     4.910e9 |           +0.19% |
> +===============================++==+=============+==================+
> |                     geom mean ||  |      -0.80% |                  |
> +-------------------------------++--+-------------+------------------+
> 
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
> 


More information about the Libraries mailing list