on wip/yuras/scanner help sign in
44 lines 1.3 kB history raw
1{-# LANGUAGE NoImplicitPrelude #-}
3module Main (main) where
5import Prelude.Compat
7import Criterion.Main
8import Data.Aeson (decode, encode)
9import Data.Time.Clock (UTCTime)
10import Data.Time.LocalTime (ZonedTime)
11import qualified Data.ByteString.Lazy as BL
13utcTime :: BL.ByteString -> Maybe [UTCTime]
14utcTime = decode
16zTime :: BL.ByteString -> Maybe [ZonedTime]
17zTime = decode
19main :: IO ()
20main = do
21 let file1 = BL.readFile "json-data/dates.json"
22 let file2 = BL.readFile "json-data/dates-fract.json"
23 defaultMain [
24 bgroup "decode" [
25 bgroup "UTCTime" [
26 env file1 $ \bs -> bench "whole" $ nf utcTime bs
27 , env file2 $ \bs -> bench "fractional" $ nf utcTime bs
28 ]
29 , bgroup "ZonedTime" [
30 env file1 $ \bs -> bench "whole" $ nf zTime bs
31 , env file2 $ \bs -> bench "fractional" $ nf zTime bs
32 ]
33 ]
34 , bgroup "encode" [
35 bgroup "UTCTime" [
36 env (utcTime <$> file1) $ \ts -> bench "whole" $ nf encode ts
37 , env (utcTime <$> file2) $ \ts -> bench "fractional" $ nf encode ts
38 ]
39 , bgroup "ZonedTime" [
40 env (zTime <$> file1) $ \ts -> bench "whole" $ nf encode ts
41 , env (zTime <$> file2) $ \ts -> bench "fractional" $ nf encode ts
42 ]
43 ]
44 ]