git.iko.soy/typeable/html-parse
on bd16756 help sign in
typeable/html-parse/Benchmark.hs
30 lines 1.2 kB history raw
1import Criterion.Main
2import qualified Data.Text.IO as TIO
3import Control.DeepSeq
4import qualified Text.HTML.TagSoup as Soup
5import qualified Text.HTML.Parser as Me
7main :: IO ()
8main = do
9 t <- TIO.readFile "test.html"
10 s <- readFile "test.html"
11 defaultMain
12 [ bgroup "Forced"
13 [ bench "fast parse Text" $ nf (Soup.parseTagsOptions Soup.parseOptionsFast) t
14 , bench "parse Text" $ nf (Soup.parseTagsOptions Soup.parseOptions) t
15 , bench "mine Text" $ nf Me.tagStream t
16 ]
17 , bgroup "length"
18 [ bench "fast parse Text" $ whnf (length . Soup.parseTagsOptions Soup.parseOptionsFast) t
19 , bench "parse Text" $ whnf (length . Soup.parseTagsOptions Soup.parseOptions) t
20 , bench "mine Text" $ whnf (length . Me.tagStream) t
21 ]
22 ]
24instance NFData t => NFData (Soup.Tag t) where
25 rnf (Soup.TagOpen t attrs) = rnf t `seq` rnf attrs `seq` ()
26 rnf (Soup.TagClose t) = rnf t `seq` ()
27 rnf (Soup.TagText t) = rnf t `seq` ()
28 rnf (Soup.TagComment t) = rnf t `seq` ()
29 rnf (Soup.TagWarning t) = rnf t `seq` ()
30 rnf (Soup.TagPosition _ _) = ()