Skip to content

Instantly share code, notes, and snippets.

@Palmik
Last active December 16, 2015 11:18
Show Gist options
  • Save Palmik/5425951 to your computer and use it in GitHub Desktop.
Save Palmik/5425951 to your computer and use it in GitHub Desktop.
Updated results with containers-0.5.2.1 Updated results, now the benchmark was run with "-g"
{-# LANGUAGE GADTs #-}
module Main
where
import Control.DeepSeq (NFData(rnf))
import Control.Exception.Base (evaluate)
import Control.Monad.Trans (liftIO)
import qualified Data.Set
import qualified Criterion.Config as C
import qualified Criterion.Main as C
data RNF where
RNF :: NFData a => a -> RNF
instance NFData RNF where
rnf (RNF x) = rnf x
main :: IO ()
main = C.defaultMainWith C.defaultConfig (liftIO . evaluate $ rnf
[ RNF set10000
, RNF set20000
, RNF set40000
, RNF set80000
, RNF set160000
, RNF set320000
, RNF set640000
, RNF set1280000
, RNF set2560000
, RNF set5120000
])
[ C.bench "5120000" $! C.nf (Data.Set.insert 9999999) set5120000
, C.bench "2560000" $! C.nf (Data.Set.insert 9999999) set2560000
, C.bench "1280000" $! C.nf (Data.Set.insert 9999999) set1280000
, C.bench "640000" $! C.nf (Data.Set.insert 9999999) set640000
, C.bench "320000" $! C.nf (Data.Set.insert 9999999) set320000
, C.bench "160000" $! C.nf (Data.Set.insert 9999999) set160000
, C.bench "80000" $! C.nf (Data.Set.insert 9999999) set80000
, C.bench "40000" $! C.nf (Data.Set.insert 9999999) set40000
, C.bench "20000" $! C.nf (Data.Set.insert 9999999) set20000
, C.bench "10000" $! C.nf (Data.Set.insert 9999999) set10000
]
type Set = Data.Set.Set Int
set10000 :: Set
set10000 = Data.Set.fromList [1 .. 10000]
set20000 :: Set
set20000 = Data.Set.fromList [1 .. 20000]
set40000 :: Set
set40000 = Data.Set.fromList [1 .. 40000]
set80000 :: Set
set80000 = Data.Set.fromList [1 .. 80000]
set160000 :: Set
set160000 = Data.Set.fromList [1 .. 160000]
set320000 :: Set
set320000 = Data.Set.fromList [1 .. 320000]
set640000 :: Set
set640000 = Data.Set.fromList [1 .. 640000]
set1280000 :: Set
set1280000 = Data.Set.fromList [1 .. 1280000]
set2560000 :: Set
set2560000 = Data.Set.fromList [1 .. 2560000]
set5120000 :: Set
set5120000 = Data.Set.fromList [1 .. 5120000]
warming up
estimating clock resolution...
mean is 1.358566 us (640001 iterations)
found 3174 outliers among 639999 samples (0.5%)
2730 (0.4%) high severe
estimating cost of a clock call...
mean is 44.18798 ns (10 iterations)
benchmarking 5120000
collecting 100 samples, 1 iterations each, in estimated 10.08389 s
mean: 87.40868 ms, lb 87.37477 ms, ub 87.44454 ms, ci 0.950
std dev: 178.9664 us, lb 157.6268 us, ub 208.1945 us, ci 0.950
benchmarking 2560000
mean: 43.84988 ms, lb 43.81914 ms, ub 43.89271 ms, ci 0.950
std dev: 184.4242 us, lb 139.7513 us, ub 297.2442 us, ci 0.950
benchmarking 1280000
mean: 22.14120 ms, lb 22.11961 ms, ub 22.16378 ms, ci 0.950
std dev: 113.2385 us, lb 101.2558 us, ub 128.6332 us, ci 0.950
benchmarking 640000
mean: 11.26488 ms, lb 11.23060 ms, ub 11.30079 ms, ci 0.950
std dev: 180.6372 us, lb 159.0050 us, ub 211.8798 us, ci 0.950
found 1 outliers among 100 samples (1.0%)
variance introduced by outliers: 8.508%
variance is slightly inflated by outliers
benchmarking 320000
mean: 5.823954 ms, lb 5.792643 ms, ub 5.856458 ms, ci 0.950
std dev: 164.8191 us, lb 147.1442 us, ub 187.5115 us, ci 0.950
variance introduced by outliers: 22.876%
variance is moderately inflated by outliers
benchmarking 160000
mean: 2.913350 ms, lb 2.891890 ms, ub 2.937876 ms, ci 0.950
std dev: 117.3917 us, lb 102.6229 us, ub 139.9613 us, ci 0.950
found 1 outliers among 100 samples (1.0%)
variance introduced by outliers: 37.536%
variance is moderately inflated by outliers
benchmarking 80000
mean: 1.475254 ms, lb 1.458157 ms, ub 1.496032 ms, ci 0.950
std dev: 96.24664 us, lb 83.04588 us, ub 126.2565 us, ci 0.950
found 1 outliers among 100 samples (1.0%)
variance introduced by outliers: 61.543%
variance is severely inflated by outliers
benchmarking 40000
mean: 602.8425 us, lb 599.2408 us, ub 607.4941 us, ci 0.950
std dev: 21.00821 us, lb 17.11414 us, ub 25.32577 us, ci 0.950
found 10 outliers among 100 samples (10.0%)
10 (10.0%) high mild
variance introduced by outliers: 30.683%
variance is moderately inflated by outliers
benchmarking 20000
mean: 294.0113 us, lb 292.6214 us, ub 296.0923 us, ci 0.950
std dev: 8.553101 us, lb 6.283806 us, ub 11.13053 us, ci 0.950
found 16 outliers among 100 samples (16.0%)
8 (8.0%) high mild
8 (8.0%) high severe
variance introduced by outliers: 23.846%
variance is moderately inflated by outliers
benchmarking 10000
mean: 146.3703 us, lb 145.8236 us, ub 147.2231 us, ci 0.950
std dev: 3.451061 us, lb 2.451728 us, ub 4.604981 us, ci 0.950
found 24 outliers among 100 samples (24.0%)
4 (4.0%) low mild
8 (8.0%) high mild
12 (12.0%) high severe
variance introduced by outliers: 17.089%
variance is moderately inflated by outliers
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment