@@ -1,5 +1,5 @@
11import Criterion.Main
2−import Data.Aeson (decode)
2+import Data.Aeson (decode, encode)
33import Data.Time.Clock (UTCTime)
44import Data.Time.LocalTime (ZonedTime)
55import qualified Data.ByteString.Lazy as BL
@@ -12,15 +12,27 @@ zTime = decode
1212
1313main :: IO ()
1414main = do
15− let file1 = "json-data/dates.json"
16− let file2 = "json-data/dates-fract.json"
15+ let file1 = BL.readFile "json-data/dates.json"
16+ let file2 = BL.readFile "json-data/dates-fract.json"
1717 defaultMain [
18− bgroup "UTCTime" [
19− env (BL.readFile file1) $ \ ~bs -> bench "whole" $ nf utcTime bs
20− , env (BL.readFile file2) $ \ ~bs -> bench "fractional" $ nf utcTime bs
18+ bgroup "decode" [
19+ bgroup "UTCTime" [
20+ env file1 $ \ ~bs -> bench "whole" $ nf utcTime bs
21+ , env file2 $ \ ~bs -> bench "fractional" $ nf utcTime bs
22+ ]
23+ , bgroup "ZonedTime" [
24+ env file1 $ \ ~bs -> bench "whole" $ nf zTime bs
25+ , env file2 $ \ ~bs -> bench "fractional" $ nf zTime bs
26+ ]
2127 ]
22− , bgroup "ZonedTime" [
23− env (BL.readFile file1) $ \ ~bs -> bench "whole" $ nf zTime bs
24− , env (BL.readFile file2) $ \ ~bs -> bench "fractional" $ nf zTime bs
28+ , bgroup "encode" [
29+ bgroup "UTCTime" [
30+ env (utcTime <$> file1) $ \ ~ts -> bench "whole" $ nf encode ts
31+ , env (utcTime <$> file2) $ \ ~ts -> bench "fractional" $ nf encode ts
32+ ]
33+ , bgroup "ZonedTime" [
34+ env (zTime <$> file1) $ \ ~ts -> bench "whole" $ nf encode ts
35+ , env (zTime <$> file2) $ \ ~ts -> bench "fractional" $ nf encode ts
36+ ]
2537 ]
2638 ]