on master help sign in
Add typed decode benchmarks
ad4bb7bOleg Grenrus
benchmarks/Typed.hs+3
@@ -13,4 +13,7 @@ main = defaultMain [
13 Generic.benchmarks
13 Generic.benchmarks
14 , Manual.benchmarks
14 , Manual.benchmarks
15 , TH.benchmarks
15 , TH.benchmarks
16+ , Generic.decodeBenchmarks
17+ , Manual.decodeBenchmarks
18+ , TH.decodeBenchmarks
16 ]
19 ]
benchmarks/Typed/Generic.hs+20−2
@@ -1,5 +1,5 @@
1{-# LANGUAGE PackageImports #-}
1{-# LANGUAGE PackageImports #-}
2−module Typed.Generic (benchmarks) where
2+module Typed.Generic (benchmarks, decodeBenchmarks) where
3
3
4import Prelude ()
4import Prelude ()
5import Prelude.Compat
5import Prelude.Compat
@@ -26,7 +26,7 @@ encodeViaValueB = B.encode . B.toJSON
26benchmarks :: Benchmark
26benchmarks :: Benchmark
27benchmarks =
27benchmarks =
28 env ((,) <$> load "json-data/twitter100.json" <*> load "json-data/jp100.json") $ \ ~(twitter100, jp100) ->
28 env ((,) <$> load "json-data/twitter100.json" <*> load "json-data/jp100.json") $ \ ~(twitter100, jp100) ->
29− bgroup "generic" [
29+ bgroup "encodeGeneric" [
30 bgroup "direct" [
30 bgroup "direct" [
31 bench "twitter100" $ nf encodeDirectB twitter100
31 bench "twitter100" $ nf encodeDirectB twitter100
32 , bench "jp100" $ nf encodeDirectB jp100
32 , bench "jp100" $ nf encodeDirectB jp100
@@ -40,3 +40,21 @@ benchmarks =
40 , bench "jp100 baseline" $ nf encodeViaValueA jp100
40 , bench "jp100 baseline" $ nf encodeViaValueA jp100
41 ]
41 ]
42 ]
42 ]
43+
44+decodeDirectA :: L.ByteString -> Maybe Result
45+decodeDirectA = decode
46+
47+decodeDirectB :: L.ByteString -> Maybe Result
48+decodeDirectB = B.decode
49+
50+decodeBenchmarks :: Benchmark
51+decodeBenchmarks =
52+ env ((,) <$> L.readFile "json-data/twitter100.json" <*> L.readFile "json-data/jp100.json") $ \ ~(twitter100, jp100) ->
53+ bgroup "decodeGeneric"
54+ [ bgroup "direct"
55+ [ bench "twitter100" $ nf decodeDirectB twitter100
56+ , bench "jp100" $ nf decodeDirectB jp100
57+ , bench "twitter100 baseline" $ nf decodeDirectA twitter100
58+ , bench "jp100 baseline" $ nf decodeDirectA jp100
59+ ]
60+ ]
benchmarks/Typed/Manual.hs+20−2
@@ -1,5 +1,5 @@
1{-# LANGUAGE PackageImports #-}
1{-# LANGUAGE PackageImports #-}
2−module Typed.Manual (benchmarks) where
2+module Typed.Manual (benchmarks, decodeBenchmarks) where
3
3
4import Prelude ()
4import Prelude ()
5import Prelude.Compat
5import Prelude.Compat
@@ -26,7 +26,7 @@ encodeViaValueB = B.encode . B.toJSON
26benchmarks :: Benchmark
26benchmarks :: Benchmark
27benchmarks =
27benchmarks =
28 env ((,) <$> load "json-data/twitter100.json" <*> load "json-data/jp100.json") $ \ ~(twitter100, jp100) ->
28 env ((,) <$> load "json-data/twitter100.json" <*> load "json-data/jp100.json") $ \ ~(twitter100, jp100) ->
29− bgroup "manual" [
29+ bgroup "encodeManual" [
30 bgroup "direct" [
30 bgroup "direct" [
31 bench "twitter100" $ nf encodeDirectB twitter100
31 bench "twitter100" $ nf encodeDirectB twitter100
32 , bench "jp100" $ nf encodeDirectB jp100
32 , bench "jp100" $ nf encodeDirectB jp100
@@ -40,3 +40,21 @@ benchmarks =
40 , bench "jp100 baseline" $ nf encodeViaValueA jp100
40 , bench "jp100 baseline" $ nf encodeViaValueA jp100
41 ]
41 ]
42 ]
42 ]
43+
44+decodeDirectA :: L.ByteString -> Maybe Result
45+decodeDirectA = decode
46+
47+decodeDirectB :: L.ByteString -> Maybe Result
48+decodeDirectB = B.decode
49+
50+decodeBenchmarks :: Benchmark
51+decodeBenchmarks =
52+ env ((,) <$> L.readFile "json-data/twitter100.json" <*> L.readFile "json-data/jp100.json") $ \ ~(twitter100, jp100) ->
53+ bgroup "decodeManual"
54+ [ bgroup "direct"
55+ [ bench "twitter100" $ nf decodeDirectB twitter100
56+ , bench "jp100" $ nf decodeDirectB jp100
57+ , bench "twitter100 baseline" $ nf decodeDirectA twitter100
58+ , bench "jp100 baseline" $ nf decodeDirectA jp100
59+ ]
60+ ]
benchmarks/Typed/TH.hs+20−2
@@ -1,5 +1,5 @@
1{-# LANGUAGE PackageImports #-}
1{-# LANGUAGE PackageImports #-}
2−module Typed.TH (benchmarks) where
2+module Typed.TH (benchmarks, decodeBenchmarks) where
3
3
4import Prelude ()
4import Prelude ()
5import Prelude.Compat
5import Prelude.Compat
@@ -26,7 +26,7 @@ encodeViaValueB = B.encode . B.toJSON
26benchmarks :: Benchmark
26benchmarks :: Benchmark
27benchmarks =
27benchmarks =
28 env ((,) <$> load "json-data/twitter100.json" <*> load "json-data/jp100.json") $ \ ~(twitter100, jp100) ->
28 env ((,) <$> load "json-data/twitter100.json" <*> load "json-data/jp100.json") $ \ ~(twitter100, jp100) ->
29− bgroup "th" [
29+ bgroup "encodeTH" [
30 bgroup "direct" [
30 bgroup "direct" [
31 bench "twitter100" $ nf encodeDirectB twitter100
31 bench "twitter100" $ nf encodeDirectB twitter100
32 , bench "jp100" $ nf encodeDirectB jp100
32 , bench "jp100" $ nf encodeDirectB jp100
@@ -40,3 +40,21 @@ benchmarks =
40 , bench "jp100 baseline" $ nf encodeViaValueB jp100
40 , bench "jp100 baseline" $ nf encodeViaValueB jp100
41 ]
41 ]
42 ]
42 ]
43+
44+decodeDirectA :: L.ByteString -> Maybe Result
45+decodeDirectA = decode
46+
47+decodeDirectB :: L.ByteString -> Maybe Result
48+decodeDirectB = B.decode
49+
50+decodeBenchmarks :: Benchmark
51+decodeBenchmarks =
52+ env ((,) <$> L.readFile "json-data/twitter100.json" <*> L.readFile "json-data/jp100.json") $ \ ~(twitter100, jp100) ->
53+ bgroup "decodeTH"
54+ [ bgroup "direct"
55+ [ bench "twitter100" $ nf decodeDirectB twitter100
56+ , bench "jp100" $ nf decodeDirectB jp100
57+ , bench "twitter100 baseline" $ nf decodeDirectA twitter100
58+ , bench "jp100 baseline" $ nf decodeDirectA jp100
59+ ]
60+ ]