@@ -1,5 +1,5 @@
1{-# LANGUAGE PackageImports #-}
1{-# LANGUAGE PackageImports #-}
2−module Typed.Generic (benchmarks) where
2+module Typed.Generic (benchmarks, decodeBenchmarks) where
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
44+decodeDirectA :: L.ByteString -> Maybe Result
45+decodeDirectA = decode
47+decodeDirectB :: L.ByteString -> Maybe Result
48+decodeDirectB = B.decode
50+decodeBenchmarks :: Benchmark
52+ env ((,) <$> L.readFile "json-data/twitter100.json" <*> L.readFile "json-data/jp100.json") $ \ ~(twitter100, jp100) ->
53+ bgroup "decodeGeneric"
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