packages feed

nice-html-0.4.0: benchmarks/Perf.hs

{-# LANGUAGE BangPatterns #-}
import qualified BigTable.Blaze      as Blaze
import qualified BigTable.Lucid      as Lucid
import qualified BigTable.Nice       as Nice
import qualified Criterion.Main      as Perf
import qualified Data.Text.Lazy.IO   as T

{-# NOINLINE rows #-}
rows :: Int -> [[Int]]
rows i = replicate i [1..10]

main :: IO ()
main = do
{-
  -- Sanity checks
  let
    check l f g =
      if f' == g'
      then putStrLn ("OK: " ++ l)
      else do
        putStrLn ("FAILED: " ++ l)
        putStrLn "\n### f:"
        T.putStrLn f'
        putStrLn "\n### g:"
        T.putStrLn g'
      where
        f' = f (rows 10)
        g' = g (rows 10)

  check "nice = blaze" Nice.bigTable Blaze.bigTable
  check "nice = lucid" Nice.bigTable Lucid.bigTable
  check "lucid = blaze" Lucid.bigTable Blaze.bigTable
-}

  Perf.defaultMain
    [ Perf.bgroup (show i)
      [ Blaze.benchmark (rows i)
      , Nice.benchmark (rows i)
      , Lucid.benchmark (rows i)
      ]
    | i <- [10, 100, 1000]
    ]