erratic behavior for System.Time.diffClockTimes

I'm trying out GHC-7.0.3-x86_64 for Mac OS X and see what seems to be a bug in System.Time.diffClockTimes. The TimeDiff tdPicosec field returns values that seem to jump around erratically: test = do startTime <- System.Time.getClockTime endTime <- System.Time.getClockTime let dt = diffClockTimes endTime startTime putStrLn $ show dt Prelude Test> test TimeDiff {tdYear = 0, tdMonth = 0, tdDay = 0, tdHour = 0, tdMin = 0, tdSec = 0, tdPicosec = 0} Prelude Test> test TimeDiff {tdYear = 0, tdMonth = 0, tdDay = 0, tdHour = 0, tdMin = 0, tdSec = 0, tdPicosec = 3000000} Prelude Test> test TimeDiff {tdYear = 0, tdMonth = 0, tdDay = 0, tdHour = 0, tdMin = 0, tdSec = 0, tdPicosec = -3329012246138323150000000} Prelude Test> test TimeDiff {tdYear = 0, tdMonth = 0, tdDay = 0, tdHour = 0, tdMin = 0, tdSec = 0, tdPicosec = 3000000} Prelude Test> test TimeDiff {tdYear = 0, tdMonth = 0, tdDay = 0, tdHour = 0, tdMin = 0, tdSec = 0, tdPicosec = -3329012246138322851000000} Prelude Test> I can file a bug, unless I'm overlooking something here. Warren

On 8 April 2011 22:48, Warren Harris
I'm trying out GHC-7.0.3-x86_64 for Mac OS X and see what seems to be a bug in System.Time.diffClockTimes. The TimeDiff tdPicosec field returns values that seem to jump around erratically
Strange. This doesn't happen on my Ubuntu x86_64: *Main> testOLD TimeDiff {tdYear = 0, tdMonth = 0, tdDay = 0, tdHour = 0, tdMin = 0, tdSec = 0, tdPicosec = 3000000} *Main> testOLD TimeDiff {tdYear = 0, tdMonth = 0, tdDay = 0, tdHour = 0, tdMin = 0, tdSec = 0, tdPicosec = 5000000} *Main> testOLD TimeDiff {tdYear = 0, tdMonth = 0, tdDay = 0, tdHour = 0, tdMin = 0, tdSec = 0, tdPicosec = 5000000} *Main> testOLD TimeDiff {tdYear = 0, tdMonth = 0, tdDay = 0, tdHour = 0, tdMin = 0, tdSec = 0, tdPicosec = 6000000} *Main> testOLD TimeDiff {tdYear = 0, tdMonth = 0, tdDay = 0, tdHour = 0, tdMin = 0, tdSec = 0, tdPicosec = 6000000} I also tried with the new time library but that also works as expected: import Data.Time test = do startTime <- getCurrentTime endTime <- getCurrentTime let dt = diffUTCTime endTime startTime putStrLn $ show dt *Main> test 0.000006s *Main> test 0.000007s *Main> test 0.000006s *Main> test 0.000004s *Main> test 0.000007s Bas

On Fri, Apr 8, 2011 at 3:48 PM, Warren Harris
I'm trying out GHC-7.0.3-x86_64 for Mac OS X and see what seems to be a bug in System.Time.diffClockTimes. The TimeDiff tdPicosec field returns values that seem to jump around erratically:
test = do startTime <- System.Time.getClockTime endTime <- System.Time.getClockTime let dt = diffClockTimes endTime startTime putStrLn $ show dt
Prelude Test> test TimeDiff {tdYear = 0, tdMonth = 0, tdDay = 0, tdHour = 0, tdMin = 0, tdSec = 0, tdPicosec = 0} Prelude Test> test TimeDiff {tdYear = 0, tdMonth = 0, tdDay = 0, tdHour = 0, tdMin = 0, tdSec = 0, tdPicosec = 3000000} Prelude Test> test TimeDiff {tdYear = 0, tdMonth = 0, tdDay = 0, tdHour = 0, tdMin = 0, tdSec = 0, tdPicosec = -3329012246138323150000000} Prelude Test> test TimeDiff {tdYear = 0, tdMonth = 0, tdDay = 0, tdHour = 0, tdMin = 0, tdSec = 0, tdPicosec = 3000000} Prelude Test> test TimeDiff {tdYear = 0, tdMonth = 0, tdDay = 0, tdHour = 0, tdMin = 0, tdSec = 0, tdPicosec = -3329012246138322851000000} Prelude Test>
There's already a ticket: http://hackage.haskell.org/trac/ghc/ticket/4970 It is specific to 64bit on Mac OS. I noticed it myself a bit ago. Please add yourself to the CC list on the ticket if its affecting you. Antoine
participants (3)
-
Antoine Latter
-
Bas van Dijk
-
Warren Harris