on master help sign in
Add a benchmark for standard ISO-8601 timestamps
commit69b7e7f43ca97103e823cf39c13fad441a498661 authorJanne Hellsten <jjhellst@gmail.com> dateSun 12 Jul 2015, 14:05 (11 years ago) parent9272216
4 files changed+36
benchmarks/Dates.hs+22 benchmarks/aeson-benchmarks.cabal+12 benchmarks/json-data/dates-fract.json+1 benchmarks/json-data/dates.json+1
benchmarks/Dates.hsnew file+22
@@ -0,0 +1,22 @@
1+
2+import Control.Exception
3+import Control.Monad
4+import Data.Aeson
5+import Data.Time.Clock (UTCTime)
6+import qualified Data.ByteString.Lazy as BL
7+import qualified Data.ByteString as B
8+import Criterion.Main
9+
10+utcTime :: BL.ByteString -> [UTCTime]
11+utcTime str = let Just t = decode str in t
12+
13+main :: IO ()
14+main = do
15+ let file1 = "json-data/dates.json"
16+ let file2 = "json-data/dates-fract.json"
17+ enA1 <- BL.readFile file1
18+ enA2 <- BL.readFile file2
19+ defaultMain
20+ [ bench "utc-time" $ nf utcTime enA1
21+ , bench "utc-time fract" $ nf utcTime enA2
22+ ]
benchmarks/aeson-benchmarks.cabal+12
@@ -140,3 +140,15 @@ executable aeson-benchmark-json-parse
140140 deepseq,
141141 json,
142142 time
143+
144+executable aeson-benchmark-dates
145+ main-is: Dates.hs
146+ ghc-options: -Wall -O2 -rtsopts
147+ build-depends:
148+ base,
149+ bytestring,
150+ criterion,
151+ deepseq,
152+ aeson-benchmarks,
153+ text,
154+ time
benchmarks/json-data/dates-fract.jsonnew file+1
@@ -0,0 +1 @@
1+["2015-02-02T09:10:11.123Z","2015-02-03T09:10:11.123Z","2014-01-02T09:10:11.333Z","2014-01-03T02:09:12.444Z","2013-05-06T07:08:09.444Z","2015-02-02T09:10:11.66Z","2015-02-03T09:10:11.66Z","2014-01-02T09:10:11.66Z","2014-01-03T02:09:12.66Z","2013-05-06T07:08:09.66Z"]
benchmarks/json-data/dates.jsonnew file+1
@@ -0,0 +1 @@
1+["2015-02-02T09:10:11Z","2015-02-03T09:10:11Z","2014-01-02T09:10:11Z","2014-01-03T02:09:12Z","2013-05-06T07:08:09Z","2015-02-02T09:10:11Z","2015-02-03T09:10:11Z","2014-01-02T09:10:11Z","2014-01-03T02:09:12Z","2013-05-06T07:08:09Z"]