Main.hs (1305B)
1 {-# OPTIONS_GHC -fno-warn-orphans #-} 2 {-# LANGUAGE BangPatterns #-} 3 {-# LANGUAGE FlexibleInstances #-} 4 {-# LANGUAGE OverloadedStrings #-} 5 {-# LANGUAGE StandaloneDeriving #-} 6 7 module Main where 8 9 import Criterion.Main 10 import Crypto.HDKey.BIP32 11 import Control.DeepSeq 12 import Crypto.Curve.Secp256k1 as S 13 import qualified Data.Maybe as M 14 15 instance NFData S.Projective 16 instance NFData (X Integer) 17 instance NFData (X S.Projective) 18 instance NFData XPub 19 instance NFData XPrv 20 instance NFData HDKey 21 22 main :: IO () 23 main = defaultMain [ 24 bgroup "ppad-bip32" [ 25 bench_master 26 , bench_derive_pub 27 , bench_derive_priv 28 , bench_xpub 29 , bench_xprv 30 , bench_parse 31 ] 32 ] 33 34 m :: HDKey 35 m = case master "my super entropic entropy" of 36 Just !s -> s 37 _ -> error "bang" 38 39 bench_master :: Benchmark 40 bench_master = bench "master" $ nf master "my super entropic entropy" 41 42 bench_derive_pub :: Benchmark 43 bench_derive_pub = bench "derive_child_pub" $ nf (derive_child_pub m) 0 44 45 bench_derive_priv :: Benchmark 46 bench_derive_priv = bench "derive_child_priv" $ nf (derive_child_priv m) 0 47 48 bench_xpub :: Benchmark 49 bench_xpub = bench "xpub" $ nf xpub m 50 51 bench_xprv :: Benchmark 52 bench_xprv = bench "xprv" $ nf xprv m 53 54 bench_parse :: Benchmark 55 bench_parse = bench "parse" $ nf parse (M.fromJust (xprv m)) 56