Skip to content

Commit ad4bb7b

Browse files
committed
Add typed decode benchmarks
1 parent 0ef76cf commit ad4bb7b

File tree

4 files changed

+63
-6
lines changed

4 files changed

+63
-6
lines changed

benchmarks/Typed.hs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,7 @@ main = defaultMain [
1313
Generic.benchmarks
1414
, Manual.benchmarks
1515
, TH.benchmarks
16+
, Generic.decodeBenchmarks
17+
, Manual.decodeBenchmarks
18+
, TH.decodeBenchmarks
1619
]

benchmarks/Typed/Generic.hs

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{-# LANGUAGE PackageImports #-}
2-
module Typed.Generic (benchmarks) where
2+
module Typed.Generic (benchmarks, decodeBenchmarks) where
33

44
import Prelude ()
55
import Prelude.Compat
@@ -26,7 +26,7 @@ encodeViaValueB = B.encode . B.toJSON
2626
benchmarks :: Benchmark
2727
benchmarks =
2828
env ((,) <$> load "json-data/twitter100.json" <*> load "json-data/jp100.json") $ \ ~(twitter100, jp100) ->
29-
bgroup "generic" [
29+
bgroup "encodeGeneric" [
3030
bgroup "direct" [
3131
bench "twitter100" $ nf encodeDirectB twitter100
3232
, bench "jp100" $ nf encodeDirectB jp100
@@ -40,3 +40,21 @@ benchmarks =
4040
, bench "jp100 baseline" $ nf encodeViaValueA jp100
4141
]
4242
]
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

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{-# LANGUAGE PackageImports #-}
2-
module Typed.Manual (benchmarks) where
2+
module Typed.Manual (benchmarks, decodeBenchmarks) where
33

44
import Prelude ()
55
import Prelude.Compat
@@ -26,7 +26,7 @@ encodeViaValueB = B.encode . B.toJSON
2626
benchmarks :: Benchmark
2727
benchmarks =
2828
env ((,) <$> load "json-data/twitter100.json" <*> load "json-data/jp100.json") $ \ ~(twitter100, jp100) ->
29-
bgroup "manual" [
29+
bgroup "encodeManual" [
3030
bgroup "direct" [
3131
bench "twitter100" $ nf encodeDirectB twitter100
3232
, bench "jp100" $ nf encodeDirectB jp100
@@ -40,3 +40,21 @@ benchmarks =
4040
, bench "jp100 baseline" $ nf encodeViaValueA jp100
4141
]
4242
]
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

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{-# LANGUAGE PackageImports #-}
2-
module Typed.TH (benchmarks) where
2+
module Typed.TH (benchmarks, decodeBenchmarks) where
33

44
import Prelude ()
55
import Prelude.Compat
@@ -26,7 +26,7 @@ encodeViaValueB = B.encode . B.toJSON
2626
benchmarks :: Benchmark
2727
benchmarks =
2828
env ((,) <$> load "json-data/twitter100.json" <*> load "json-data/jp100.json") $ \ ~(twitter100, jp100) ->
29-
bgroup "th" [
29+
bgroup "encodeTH" [
3030
bgroup "direct" [
3131
bench "twitter100" $ nf encodeDirectB twitter100
3232
, bench "jp100" $ nf encodeDirectB jp100
@@ -40,3 +40,21 @@ benchmarks =
4040
, bench "jp100 baseline" $ nf encodeViaValueB jp100
4141
]
4242
]
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+
]

0 commit comments

Comments
 (0)