packages feed

hs-term-emulator-0.1.0.0: bench/Main.hs

module Main where

import Criterion.Main
import System.Terminal.Emulator.Parsing.Types
import System.Terminal.Emulator.Term (mkTerm)
import System.Terminal.Emulator.Term.Process (processTermAtoms)

lotsOfAAAAA :: Int -> [TermAtom]
lotsOfAAAAA numRows =
  concat
    ( replicate
        numRows
        ( ( replicate 30 (TermAtom_VisibleChar 'A')
              <> [ TermAtom_SingleCharacterFunction Control_CarriageReturn,
                   TermAtom_SingleCharacterFunction Control_LineFeed
                 ]
          )
        )
    )

main :: IO ()
main =
  defaultMain
    [ bgroup
        "term"
        [ bench "As 10" $ whnf (processTermAtoms (lotsOfAAAAA 10)) (mkTerm (40, 40)),
          bench "As 100" $ whnf (processTermAtoms (lotsOfAAAAA 100)) (mkTerm (40, 40)),
          bench "As 1000" $ whnf (processTermAtoms (lotsOfAAAAA 1000)) (mkTerm (40, 40)),
          bench "As 10000" $ whnf (processTermAtoms (lotsOfAAAAA 10000)) (mkTerm (40, 40))
        ]
    ]