Order of tests in rem and friends
Simon Peyton-Jones
simonpj at microsoft.com
Mon Mar 29 04:03:32 EDT 2010
I would say: push the patch, record that you have done so on the ticket (with nofib results and the patch commit message), but leave the ticket open since it really advocates a slight change in semantics that is still un-done.
Simon
| -----Original Message-----
| From: cvs-ghc-bounces at haskell.org [mailto:cvs-ghc-bounces at haskell.org] On Behalf Of
| Roman Leshchinskiy
| Sent: 29 March 2010 03:03
| To: cvs-ghc at haskell.org list
| Subject: Re: Order of tests in rem and friends
|
| I just realised that we actually have a ticket for this:
| http://hackage.haskell.org/trac/ghc/ticket/3065. Interestingly, that thread reports
| increased allocations for some nofib programs with a similar patch but I'm not seeing
| that any longer with 6.13. In any case, we agreed to get rid of the overflow checks
| altogether but I haven't had a chance to work on that yet.
|
| Roman
|
| On 28/03/2010, at 17:04, Roman Leshchinskiy wrote:
|
| > Following the discussion in haskell-cafe, I tried changing the order of tests in the
| Integral methods from:
| >
| > a `rem` b
| > | b == 0 = divZeroError
| > | a == minBound && b == (-1) = overflowError
| > | otherwise = a `remInt` b
| >
| > to
| >
| > a `rem` b
| > | b == 0 = divZeroError
| > | b == (-1) && a == minBound = overflowError
| > | otherwise = a `remInt` b
| >
| > for the various Int instances in base/GHC/Real.lhs and base/GHC/Int.lhs. The nofib
| results are below. Would it be ok to push the patch? I suspect the runtime differences
| aren't significant but I can investigate if necessary.
| >
| > Roman
| >
| > --------------------------------------------------------------------------------
| > Program Size Allocs Runtime Elapsed
| > --------------------------------------------------------------------------------
| > anna -0.1% -0.0% 0.08 0.10
| > ansi -0.2% +0.0% 0.00 0.01
| > atom -0.2% +0.0% 0.20 +0.0%
| > awards -0.2% +0.0% 0.00 0.01
| > banner -0.2% +0.0% 0.00 0.01
| > bernouilli +0.0% +0.0% +0.0% -1.0%
| > boyer -0.2% +0.0% 0.03 0.04
| > boyer2 -0.2% +0.0% 0.00 0.01
| > bspt -0.2% +0.0% 0.00 0.02
| > cacheprof -0.2% +0.0% -0.5% -0.4%
| > calendar -0.2% -0.1% 0.00 0.02
| > cichelli +0.0% -0.0% 0.07 0.08
| > circsim -0.2% +0.0% +0.3% +0.5%
| > clausify +0.0% +0.0% 0.03 0.04
| > comp_lab_zift -0.2% +0.0% 0.17 0.18
| > compress -0.2% -0.1% 0.15 0.17
| > compress2 +0.0% +0.0% 0.14 0.16
| > constraints -0.2% +0.0% +0.7% +0.9%
| > cryptarithm1 -0.2% +0.0% -1.1% -1.0%
| > cryptarithm2 +0.0% +0.0% 0.01 0.02
| > cse +0.0% +0.0% 0.00 0.01
| > eliza -0.2% +0.0% 0.00 0.01
| > event -0.3% -1.2% 0.13 0.14
| > exp3_8 -0.2% +0.0% 0.10 0.12
| > expert -0.2% +0.0% 0.00 0.02
| > fem -0.2% +0.0% 0.02 0.03
| > fft -0.2% -0.1% 0.03 0.04
| > fft2 -0.3% +0.0% 0.06 0.07
| > fibheaps -0.2% +0.0% 0.03 0.04
| > fish +0.0% -4.9% 0.02 0.03
| > fluid -0.2% +0.0% 0.01 0.02
| > fulsom +0.0% -0.1% +4.6% +0.9%
| > gamteb +0.0% -0.0% 0.07 0.09
| > gcd +0.0% +0.0% 0.02 0.03
| > gen_regexps +0.0% +0.0% 0.00 0.01
| > genfft -0.2% +0.0% 0.03 0.04
| > gg -0.2% +0.0% 0.01 0.02
| > grep +0.0% +0.0% 0.00 0.01
| > hidden -0.2% +0.0% -2.4% +0.9%
| > hpg -0.2% +0.0% 0.19 +3.2%
| > ida -0.2% +0.0% 0.09 0.10
| > infer -0.4% +0.0% 0.04 0.05
| > integer -0.2% +0.0% -1.0% -1.4%
| > integrate -0.4% +0.0% -2.9% +0.0%
| > knights -0.2% +0.0% 0.00 0.01
| > lcss -0.2% +0.0% -3.8% +0.7%
| > life +0.0% +0.0% 0.19 -2.9%
| > lift +0.0% +0.0% 0.00 0.01
| > listcompr -0.2% +0.0% 0.10 0.13
| > listcopy -0.2% +0.0% 0.10 0.14
| > maillist -0.2% +0.0% 0.08 +0.2%
| > mandel -0.2% -0.0% 0.07 0.09
| > mandel2 +0.0% -0.3% 0.01 0.02
| > minimax -0.2% +0.0% 0.00 0.01
| > mkhprog +0.0% +0.0% 0.00 0.01
| > multiplier -0.2% +0.0% 0.09 0.11
| > nucleic2 +0.0% +0.0% 0.06 0.07
| > para +0.0% +0.0% -3.8% -3.2%
| > paraffins -0.2% +0.0% 0.08 0.11
| > parser +0.0% +0.0% 0.03 0.04
| > parstof -0.2% +0.0% 0.00 0.01
| > pic -0.2% -2.8% 0.00 0.02
| > power +0.0% +0.0% +0.6% +0.3%
| > pretty +0.0% +0.0% 0.00 0.01
| > primes -0.2% +0.0% 0.05 0.06
| > primetest -0.2% +0.0% +0.0% +1.9%
| > prolog -0.2% +0.0% 0.00 0.01
| > puzzle -0.2% +0.0% 0.15 0.16
| > queens -0.2% +0.0% 0.02 0.03
| > reptile -0.2% +0.0% 0.01 0.03
| > rewrite -0.2% +0.0% 0.01 0.02
| > rfib -0.2% +0.0% 0.05 0.06
| > rsa -0.2% +0.0% 0.07 0.08
| > scc -0.2% +0.0% 0.00 0.01
| > sched -0.2% +0.0% 0.02 0.03
| > scs +0.0% +0.0% -1.7% +1.2%
| > simple -0.2% +0.0% +0.0% +2.8%
| > solid -0.2% +0.0% 0.11 0.13
| > sorting +0.0% +0.0% 0.00 0.01
| > sphere -0.2% +0.0% 0.08 0.10
| > symalg -0.2% +0.0% 0.03 0.04
| > tak -0.2% +0.0% 0.01 0.02
| > transform -0.2% -0.5% -0.7% -2.8%
| > treejoin +0.0% +0.0% 0.20 -0.8%
| > typecheck +0.0% +0.0% 0.19 0.20
| > veritas -0.1% +0.0% 0.00 0.01
| > wang +0.0% +0.0% 0.08 0.10
| > wave4main +0.0% +0.0% +0.0% -1.3%
| > wheel-sieve1 -0.2% +0.0% -4.2% -4.0%
| > wheel-sieve2 -0.2% +0.0% 0.13 0.16
| > x2n1 +0.0% +0.0% 0.02 0.03
| > --------------------------------------------------------------------------------
| > Min -0.4% -4.9% -4.2% -4.0%
| > Max +0.0% +0.0% +4.6% +3.2%
| > Geometric Mean -0.1% -0.1% -0.9% -0.2%
| >
| >
| > _______________________________________________
| > Cvs-ghc mailing list
| > Cvs-ghc at haskell.org
| > http://www.haskell.org/mailman/listinfo/cvs-ghc
|
| _______________________________________________
| Cvs-ghc mailing list
| Cvs-ghc at haskell.org
| http://www.haskell.org/mailman/listinfo/cvs-ghc
More information about the Cvs-ghc
mailing list