[Haskell-cafe] Performance with do notation, mwc-random and unboxed vector
malcolm.wallace at me.com
Mon Jun 11 12:17:34 CEST 2012
On 11 Jun 2012, at 10:38, Dmitry Dzhus wrote:
> main = do
> g <- create
> e' <- VU.replicateM count $ standard g
> return ()
In all likelhood, ghc is spotting that the value e' is not used, and that there are no side-effects, so it does not do anything at runtime. If you expand the action argument to replicateM, such that it uses do-notation instead, perhaps ghc can no longer prove the lack of side-effects, and so actually runs the computation before throwing away its result.
When writing toy benchmarks in a lazy language, it is always important to understand to what extent your program _uses_ the data from a generator, or you are bound to get misleading performance measurements.
More information about the Haskell-Cafe