RFC: Add HasCallStack constraint to partial Data.List functions.
Oleg Grenrus
oleg.grenrus at iki.fi
Wed Jul 7 17:10:02 UTC 2021
After rereading https://wiki.haskell.org/Library_submissions page it
actually says:
> Following discussion, it's the responsibility of the core libraries
committee to determine if the proposal should be accepted. Send an email
to the core libraries committee requesting a decision, optionally
including your own summary of the mailing list discussion.
I submit this proposal to the core libraries committee.
My summary is below:
- there is (vague) Partial-constaint alternative proposal, which tries
to discuss more elegant solution than to adding "operational" constraint
to the functions. It's not concrete.
- there are plenty of comments in support of HasCallStack too.
So I ask the CLC to make a decision, whether HasCallStack is fine for
now, or not.
- Oleg
On 5.7.2021 12.39, Oleg Grenrus wrote:
> The discussion period for this proposal have ended.
>
> The most meritorious counter-argument/proposal is using Partial
> constraint. [1]
> I don't have counterarguments which would allow me simply discard that.
>
> I encourage Richard and Henrik to pursue that plan.
>
> So I have decided to drop this, HasCallStack, proposal.
>
> - Oleg
>
> P.S. I'd like to have formal process (like in [2]), and make a body
> (CLC?) to
> decide whether the alterantives have merits, so the process would have
> chance to make progress.
>
> [1]: https://mail.haskell.org/pipermail/libraries/2021-June/031291.html
> [2]: https://mail.haskell.org/pipermail/libraries/2021-July/031339.html
>
> On 30.5.2021 16.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