on ea7fb0f help sign in
typeable/uuid/tests/BenchUUID.hs
37 lines 1.2 kB history raw
1import Control.Monad (replicateM)
2import Control.Parallel.Strategies
3import Criterion.Main
4import Data.Maybe (fromJust)
5import qualified Data.ByteString.Lazy as BL
6import qualified Data.ByteString.Lazy.Internal as BL
7import qualified Data.UUID as U
8import qualified Data.UUID.Internal as U
9import System.Random
12instance NFData BL.ByteString where
13 rnf BL.Empty = ()
14 rnf (BL.Chunk _ ts) = rnf ts
16instance NFData U.UUID where
17 rnf (U.UUID tl tm th ch cl node) =
18 rnf tl `seq` rnf tm `seq` rnf th `seq` rnf ch `seq` rnf cl `seq` rnf node
20instance NFData U.Node where
21 rnf (U.Node w1 w2 w3 w4 w5 w6) =
22 rnf w1 `seq` rnf w2 `seq` rnf w3 `seq` rnf w4 `seq` rnf w5 `seq` rnf w6
26main :: IO ()
27main = do
28 u1 <- randomIO
29 let s1 = U.toString u1
30 b1 = U.toByteString u1
31 defaultMain [
32 bench "toString" $ B (rnf . U.toString) u1,
33 bench "fromString" $ B (rnf . U.fromString) s1,
34 bench "toByteString" $ B (rnf . U.toByteString) u1,
35 bench "fromByteString" $ B (rnf . U.fromByteString) b1,
36 bench "random gen" $ rnf `fmap` (randomIO :: IO U.UUID)
37 ]