[Haskell-cafe] proper way to generate a random data in criterion

Gregory Collins greg at gregorycollins.net
Wed Oct 19 10:21:44 CEST 2011

On Wed, Oct 19, 2011 at 10:13 AM, Kazu Yamamoto <kazu at iij.ad.jp> wrote:
> Hello,
> I'm measuring performance of the insertion operation of red-black
> trees. For input, three kinds of [Int] are prepared: the increasing
> the order, decreasing order, and random.
> The random case is 4 or 5 times slower than the others. I'm afraid
> that my program also measured the cost of random Int generation.
> My benchmark code can be found:
>        https://github.com/kazu-yamamoto/llrbtree/blob/master/bench/insert/Bench.hs
> Does anyone kindly take a look and tell me whether or not my criterion
> code measures the cost of random Int generation? If so, would you
> suggest how to avoid it?

The code looks ok to me -- you've deepseq'ed the list, and forcing it
to whnf should force the deepseq. Also, criterion runs your benchmark
many times, if your code was measuring the RNG time it would only
happen once. This would show up in the criterion output as an
unusually large outlier.

Gregory Collins <greg at gregorycollins.net>

More information about the Haskell-Cafe mailing list