on 0.10.0.0 help sign in
39 lines 1.2 kB history raw
1import Control.Applicative ((<$>))
2import Criterion.Main
3import Data.Aeson (decode, encode)
4import Data.Time.Clock (UTCTime)
5import Data.Time.LocalTime (ZonedTime)
6import qualified Data.ByteString.Lazy as BL
8utcTime :: BL.ByteString -> Maybe [UTCTime]
9utcTime = decode
11zTime :: BL.ByteString -> Maybe [ZonedTime]
12zTime = decode
14main :: IO ()
15main = do
16 let file1 = BL.readFile "json-data/dates.json"
17 let file2 = BL.readFile "json-data/dates-fract.json"
18 defaultMain [
19 bgroup "decode" [
20 bgroup "UTCTime" [
21 env file1 $ \ ~bs -> bench "whole" $ nf utcTime bs
22 , env file2 $ \ ~bs -> bench "fractional" $ nf utcTime bs
23 ]
24 , bgroup "ZonedTime" [
25 env file1 $ \ ~bs -> bench "whole" $ nf zTime bs
26 , env file2 $ \ ~bs -> bench "fractional" $ nf zTime bs
27 ]
28 ]
29 , bgroup "encode" [
30 bgroup "UTCTime" [
31 env (utcTime <$> file1) $ \ ~ts -> bench "whole" $ nf encode ts
32 , env (utcTime <$> file2) $ \ ~ts -> bench "fractional" $ nf encode ts
33 ]
34 , bgroup "ZonedTime" [
35 env (zTime <$> file1) $ \ ~ts -> bench "whole" $ nf encode ts
36 , env (zTime <$> file2) $ \ ~ts -> bench "fractional" $ nf encode ts
37 ]
38 ]
39 ]