@@ -2,6 +2,7 @@ import Text.Pandoc
22import Text.Pandoc.Shared (readDataFile, normalize)
33import Criterion.Main
44import Data.List (isSuffixOf)
5+import Text.JSON.Generic
56
67readerBench :: Pandoc
78 -> (String, ParserState -> String -> Pandoc)
@@ -30,13 +31,15 @@ writerBench doc (name, writer) = bench (name ++ " writer") $ nf
3031 writerWrapText = True
3132 , writerLiterateHaskell = "+lhs" `isSuffixOf` name }) doc
3233
33−normalizeBench :: Pandoc -> Benchmark
34−normalizeBench doc = bench "normalize" $ whnf normalize doc
34+normalizeBench :: Pandoc -> [Benchmark]
35+normalizeBench doc = [ bench "normalize - with" $ nf (encodeJSON . normalize) doc
36+ , bench "normalize - without" $ nf encodeJSON doc
37+ ]
3538
3639main = do
3740 inp <- readDataFile (Just ".") "README"
3841 let ps = defaultParserState{ stateSmart = True }
3942 let doc = readMarkdown ps inp
4043 let readerBs = map (readerBench doc) readers
41− defaultMain $ map (writerBench doc) writers ++ readerBs ++ [normalizeBench doc]
44+ defaultMain $ map (writerBench doc) writers ++ readerBs ++ normalizeBench doc
4245