|
[ ghc-Bugs-1245810 ] Random.StdGen slowness: msg#00139lang.haskell.glasgow.bugs
Bugs item #1245810, was opened at 2005-07-27 10:32 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=108032&aid=1245810&group_id=8032 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: libraries/base Group: None Status: Open Resolution: None Priority: 5 Submitted By: Remi Turk (remit) Assigned to: Nobody/Anonymous (nobody) Summary: Random.StdGen slowness Initial Comment: Two (performance) problems in one: {-# OPTIONS -fffi #-} module Main (main) where import Control.Monad import Random foreign import ccall unsafe "random" _crandom :: IO Int randomInt :: (Int, Int) -> IO Int randomInt (min,max) = do n <- _crandom return $ min + n `rem` range where range = max - min + 1 main = replicateM_ (5*10^6) $ do x <- randomRIO (0::Int,1000) :: IO Int x `seq` return () return () First, without the "seq" at the end, hardly anything is evaluated and we're building huge amounts of thunks. Three ideas about this one: - Blame the user :) - data StdGen = StdGen !Int !Int Use strict fields in StdGen. Doesn't actually help (at least in this example). - Force evaluation of the StdGen in getStdRandom. Does help in this example, but also changes behaviour of the library: x <- randomRIO undefined currently dies only when x (or the result of a later randomRIO) is evaluated. This change causes it to die immediately. Second, even _with_ the "seq", replacing "randomRIO" by "randomInt" speeds the thing up with a factor of about 30. (2 to 3.6, in a "real world" university practicum exercise of 900 lines of code) Even given the fact that they're not really doing the same thing, this seems rather much :( ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=108032&aid=1245810&group_id=8032
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | RE: [Haskell-cafe] Control.Monad.Cont fun, Simon Peyton-Jones |
|---|---|
| Next by Date: | [ ghc-Bugs-1246483 ] Template Haskell panic with class names, SourceForge.net |
| Previous by Thread: | [ ghc-Bugs-1245266 ] Runtime exception on Windows, possibly due to bit operations, SourceForge.net |
| Next by Thread: | [ ghc-Bugs-1246483 ] Template Haskell panic with class names, SourceForge.net |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |