{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
{-# LANGUAGE FlexibleContexts #-}
module Big where
import Html
import Medium (attrShort, attrLong)
import Criterion.Main
import qualified Html.Attribute as A
big :: Benchmark
big = bgroup "Big"
[ bench "table" $ nf (renderByteString . table) (15,15)
, bench "table'" $ nf (renderByteString . table') (15,15)
, bench "page" $ nf (renderByteString . page) "big"
, bench "page'" $ nf (renderByteString . page') "big"
]
table (n, m) = table_ . replicate n . tr_ $ map td_ [(1::Int)..m]
table' = \(n,m) -> table_ . replicate n . tr_ $ map td_ [(1::Int)..m]
page x =
html_
( body_
( h1_A (A.id_ "a")
( img_
# strong_A (A.class_ "b") (0 :: Int)
)
# div_
( div_A (A.id_ "c") (1 :: Int)
)
# attrShort ""
# attrLong ""
# table (3,3)
# div_
( form_A (A.class_ "d")
( fieldset_
( div_A (A.id_ "e")
( div_
( label_A (A.class_ "f") "g"
# select_
( option_A (A.id_ "h") "i"
# option_ "j"
)
# div_A (A.class_ "k") "l"
)
# i_ x
)
# button_A (A.id_ "m") (i_ "n")
)
)
)
# div_
( form_A (A.class_ "o")
( fieldset_
( div_A (A.id_ "p")
( div_
( label_A (A.class_ "q") "r"
# select_
( option_A (A.id_ "s") "4"
# option_ "u"
)
# div_A (A.class_ "v") "w"
)
# i_ x
)
# button_A (A.id_ "x") (i_ "y")
)
)
)
# div_
( form_A (A.class_ "z")
( fieldset_
( div_A (A.id_ "A")
( div_
( label_A (A.class_ "B") "C"
# select_
( option_A (A.id_ "D") "E"
# option_ "F"
)
# div_A (A.class_ "G") "H"
)
# i_ x
)
# button_A (A.id_ "I") (i_ "J")
)
)
)
# div_
( form_A (A.class_ "K")
( fieldset_
( div_A (A.id_ "L")
( div_
( label_A (A.class_ "M") "N"
# select_
( option_A (A.id_ "O") "P"
# option_ "Q"
)
# div_A (A.class_ "R") "S"
)
# i_ x
)
# button_A (A.id_ "T") (i_ "U")
)
)
)
)
)
page' = \x ->
html_
( body_
( h1_A (A.id_ "a")
( img_
# strong_A (A.class_ "b") (0 :: Int)
)
# div_
( div_A (A.id_ "c") (1 :: Int)
)
# attrShort ""
# attrLong ""
# table (3,3)
# div_
( form_A (A.class_ "d")
( fieldset_
( div_A (A.id_ "e")
( div_
( label_A (A.class_ "f") "g"
# select_
( option_A (A.id_ "h") "i"
# option_ "j"
)
# div_A (A.class_ "k") "l"
)
# i_ x
)
# button_A (A.id_ "m") (i_ "n")
)
)
)
# div_
( form_A (A.class_ "o")
( fieldset_
( div_A (A.id_ "p")
( div_
( label_A (A.class_ "q") "r"
# select_
( option_A (A.id_ "s") "4"
# option_ "u"
)
# div_A (A.class_ "v") "w"
)
# i_ x
)
# button_A (A.id_ "x") (i_ "y")
)
)
)
# div_
( form_A (A.class_ "z")
( fieldset_
( div_A (A.id_ "A")
( div_
( label_A (A.class_ "B") "C"
# select_
( option_A (A.id_ "D") "E"
# option_ "F"
)
# div_A (A.class_ "G") "H"
)
# i_ x
)
# button_A (A.id_ "I") (i_ "J")
)
)
)
# div_
( form_A (A.class_ "K")
( fieldset_
( div_A (A.id_ "L")
( div_
( label_A (A.class_ "M") "N"
# select_
( option_A (A.id_ "O") "P"
# option_ "Q"
)
# div_A (A.class_ "R") "S"
)
# i_ x
)
# button_A (A.id_ "T") (i_ "U")
)
)
)
)
)