git.iko.soy/typeable/pandoc
on master help sign in
Make benchmarks compile again.

Additionally, fix the problem which caused one failing benchmark to stop other benchmarks from running.

commit857c63f77ecfc6e6382c9090858ca9f5dfa4c880 authorArtyom Kazak <yom@artyom.me> dateFri 1 Aug 2014, 15:32 (12 years ago) parent143d5b7
1 file changed+20−15
benchmark/benchmark-pandoc.hs+20−15
benchmark/benchmark-pandoc.hs+20−15
@@ -20,19 +20,20 @@ import Criterion.Main
2020import Criterion.Config
2121import System.Environment (getArgs)
2222import Data.Monoid
23+import Data.Maybe (mapMaybe)
24+import Debug.Trace (trace)
2325
2426readerBench :: Pandoc
2527 -> (String, ReaderOptions -> String -> IO Pandoc)
26− -> Benchmark
27−readerBench doc (name, reader) =
28− let writer = case lookup name writers of
29− Just (PureStringWriter w) -> w
30− _ -> error $ "Could not find writer for " ++ name
31− inp = writer def{ writerWrapText = True } doc
32− -- we compute the length to force full evaluation
33− getLength (Pandoc (Meta _) d) = length d
34− in bench (name ++ " reader") $ whnfIO $ getLength `fmap`
35− (reader def{ readerSmart = True }) inp
28+ -> Maybe Benchmark
29+readerBench doc (name, reader) = case lookup name writers of
30+ Just (PureStringWriter writer) ->
31+ let inp = writer def{ writerWrapText = True} doc
32+ -- we compute the length to force full evaluation
33+ getLength (Pandoc (Meta _) d) = length d
34+ in return $ bench (name ++ " reader") $ whnfIO $ getLength `fmap`
35+ (reader def{ readerSmart = True }) inp
36+ _ -> trace ("\nCould not find writer for " ++ name ++ "\n") Nothing
3637
3738writerBench :: Pandoc
3839 -> (String, WriterOptions -> Pandoc -> String)
@@ -43,13 +44,17 @@ writerBench doc (name, writer) = bench (name ++ " writer") $ nf
4344main :: IO ()
4445main = do
4546 args <- getArgs
46− (conf,_) <- parseArgs defaultConfig{ cfgSamples = Last $ Just 20 } defaultOptions args
47− inp <- readFile "README"
47+ (conf,_) <- parseArgs defaultConfig{ cfgSamples = Last $ Just 20 }
48+ defaultOptions args
49+ inp <- readFile "README"
4850 inp2 <- readFile "tests/testsuite.txt"
4951 let opts = def{ readerSmart = True }
5052 let doc = readMarkdown opts $ inp ++ unlines (drop 3 $ lines inp2)
51− let readerBs = map (readerBench doc)
52− $ filter (\(n,_) -> n /="haddock") readers
53+ let readers' = [(n,r) | (n, StringReader r) <- readers]
54+ let readerBs = mapMaybe (readerBench doc)
55+ $ filter (\(n,_) -> n /="haddock") readers'
5356 let writers' = [(n,w) | (n, PureStringWriter w) <- writers]
57+ let writerBs = map (writerBench doc)
58+ $ writers'
5459 defaultMainWith conf (return ()) $
55− map (writerBench doc) writers' ++ readerBs
60+ writerBs ++ readerBs