packages feed

pandoc-plot-0.7.1.0: benchmark/bench.hs

{-# LANGUAGE TemplateHaskell #-}

import Criterion.Main

import Text.Pandoc.Definition
import Text.Pandoc.Filter.Plot
import Text.Pandoc.Filter.Plot.Internal

import MatplotlibGallery ( galleryItem1, galleryItem2
                         , galleryItem3, galleryItem4
                         )

main :: IO ()
main = 
    defaultMain [
        envWithCleanup (return ()) (\_ -> cleanupEnv) $ \_ -> 
            bgroup "main" [
                    bench "filter-async" $ nfIO (plotTransform plotConfig benchDoc)
                  , bench "filter"       $ nfIO (makePlot plotConfig benchDoc)
                ]
    ]

plotConfig :: Configuration
plotConfig = defaultConfiguration {logVerbosity=Silent, logSink =StdErr}

cleanupEnv :: IO ()
cleanupEnv = cleanOutputDirs plotConfig benchDoc >> return ()


codeBlock :: Script -> Block
codeBlock = CodeBlock (mempty, [cls Matplotlib], mempty)


benchDoc :: Pandoc
benchDoc = Pandoc mempty [ codeBlock $(galleryItem1)
                         , codeBlock $(galleryItem2)
                         , codeBlock $(galleryItem3)
                         , codeBlock $(galleryItem4)
                         ]