[GHC] #10944: powModInteger slower than computing pow and mod separately

GHC ghc-devs at haskell.org
Wed Oct 7 21:23:13 UTC 2015


#10944: powModInteger slower than computing pow and mod separately
-------------------------------------+-------------------------------------
           Reporter:  iago           |             Owner:
               Type:  bug            |            Status:  new
           Priority:  normal         |         Milestone:
          Component:  Core           |           Version:  7.8.3
  Libraries                          |
           Keywords:  integer-gmp    |  Operating System:  Linux
       Architecture:  x86_64         |   Type of failure:  Runtime
  (amd64)                            |  performance bug
          Test Case:                 |        Blocked By:
           Blocking:                 |   Related Tickets:
Differential Rev(s):                 |
-------------------------------------+-------------------------------------
 {{{#!hs
 module Foo where

 import GHC.Integer.GMP.Internals ( powModInteger )

 test1, test2 :: Integer -> Integer -> Int -> Integer

 test1 a b c = (a ^ b) `mod` (2^c)

 test2 a b c = powModInteger a b (2^c)
 }}}

 I was expecting `test2` to perform better than `test1`, but I'm getting
 quite the opposite: the use of `powModInteger` seems to be several orders
 of magnitude slower.

 I have tested this with GHC 7.10.2 and integer-gmp 1.0.0.0 too, with
 similar results.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10944>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list