packages feed

genvalidity-text-1.0.0.1: bench/Main.hs

{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}

module Main where

import Criterion.Main as Criterion
import Data.GenValidity
import Data.GenValidity.Criterion
import Data.GenValidity.Text
import Data.Text as Strict
import Data.Text.Lazy as Lazy
import Test.QuickCheck

main :: IO ()
main =
  Criterion.defaultMain
    [ bgroup
        "Instances"
        [ genBenchSizes "Strict.Text" (genValid @Strict.Text),
          genBenchSizes "Lazy.Text" (genValid @Lazy.Text)
        ],
      bgroup
        "Approaches"
        [ genBenchSizes "via list (old version)" $ Strict.pack <$> genValid,
          genBenchSizes "genText" genText,
          genBenchSizes "genTextBy genValid" $ genTextBy genValid,
          genBenchSizes "genTextBy (choose (minBound, maxBound)) (currently in use)" $
            genTextBy (choose (minBound, maxBound))
        ]
    ]