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