Change-Id: I6c6847fac56f0a9a1a2209792e00a3aec5e672b9 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10809 Autosubmit: aspen <root@gws.fyi> Reviewed-by: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI Reviewed-by: lukegb <lukegb@tvl.fyi>
		
			
				
	
	
		
			32 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Haskell
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Haskell
		
	
	
	
	
	
--------------------------------------------------------------------------------
 | 
						|
module Xanthous.RandomBench (benchmark, main) where
 | 
						|
--------------------------------------------------------------------------------
 | 
						|
import Bench.Prelude
 | 
						|
--------------------------------------------------------------------------------
 | 
						|
import Control.Parallel.Strategies
 | 
						|
import Control.Monad.Random
 | 
						|
--------------------------------------------------------------------------------
 | 
						|
import Xanthous.Random
 | 
						|
--------------------------------------------------------------------------------
 | 
						|
 | 
						|
main :: IO ()
 | 
						|
main = defaultMain [benchmark]
 | 
						|
 | 
						|
--------------------------------------------------------------------------------
 | 
						|
 | 
						|
benchmark :: Benchmark
 | 
						|
benchmark = bgroup "Random"
 | 
						|
  [ bgroup "chooseSubset"
 | 
						|
    [ bench "serially" $
 | 
						|
      nf (evalRand $ chooseSubset (0.5 :: Double) [1 :: Int ..1000000])
 | 
						|
         (mkStdGen 1234)
 | 
						|
    ]
 | 
						|
  , bgroup "choose weightedBy"
 | 
						|
    [ bench "serially" $
 | 
						|
      nf (evalRand
 | 
						|
          . choose
 | 
						|
          . weightedBy (\n -> product [n, pred n .. 1])
 | 
						|
          $ [1 :: Int ..1000000])
 | 
						|
         (mkStdGen 1234)
 | 
						|
    ]
 | 
						|
  ]
 |