Timing repeated function calls

Jeffrey A. Scofield sja10587@qwest.net
Thu, 7 Aug 2003 23:41:42 -0700


Greetings.

Using GHC 6.0 on Mac OS X (10.2.6), I'm trying to do some timing
tests of something that doesn't take very long.  So, I want to call
a function repeatedly (1000s of times).  It appears, however, that
the compiler is figuring out that there's no need to call the
function more than once since it's pure.

Is there anything simple I can do to get the compiler to call a
function repeatedly?

Here is a snippet of code showing what I am trying right now:

     main = do
         t0 <- getClockTime
         times 1000
         t1 <- getClockTime
         . . .

     times :: Int -> IO ()
     times 0 = return ()
     times n = do
         let [a,b,c,d] = take 4 (myFunction)
         Control.Exception.evaluate a
         Control.Exception.evaluate b
         Control.Exception.evaluate c
         Control.Exception.evaluate d
         times $! n - 1

     myFunction :: [Int]
     myFunction = . . .

(There may be some absurd stuff in this code;  I've left in the
remnants of several failed attempts.)

Regards,

Jeff Scofield