1- main = putStrLn " Hello, benchmark"
1+ {-# LANGUAGE NumericUnderscores #-}
2+ {-# LANGUAGE OverloadedStrings #-}
3+
4+ import qualified Data.DataFrame as D
5+ import qualified Data.DataFrame.Internal as D
6+ import qualified Data.Vector.Unboxed as VU
7+
8+ import Control.Monad (replicateM )
9+ import Criterion.Main
10+ import System.Random (randomRIO )
11+
12+ stats :: Int -> IO ()
13+ stats n = do
14+ ns <- VU. replicateM n (randomRIO (- 20.0 :: Double , 20.0 ))
15+ xs <- VU. replicateM n (randomRIO (- 20.0 :: Double , 20.0 ))
16+ ys <- VU. replicateM n (randomRIO (- 20.0 :: Double , 20.0 ))
17+ let df = D. fromList [(" first" , D. UnboxedColumn ns),
18+ (" second" , D. UnboxedColumn xs),
19+ (" third" , D. UnboxedColumn ys)]
20+
21+ print $ D. mean " first" df
22+ print $ D. variance " second" df
23+ print $ D. correlation " second" " third" df
24+ print $ D. select [" first" ] df D. |> D. take 10
25+
26+ main = defaultMain [
27+ bgroup " stats" [ bench " 300_000" $ nfIO (stats 100_000 )
28+ , bench " 3_000_000" $ nfIO (stats 1_000_000 )
29+ , bench " 30_000_000" $ nfIO (stats 30_000_000 )
30+ ]
31+ ]
0 commit comments