module Main ( main ) where import Gauge.Main (bench, bgroup, defaultMain, nf) import qualified Benchmark.Htoml as Htoml import qualified Benchmark.HtomlMegaparsec as HtomlM import qualified Benchmark.Tomland as Tomland import qualified Benchmark.TomlParser as TomlParser import qualified Data.Text.IO as TIO -- | Benchmark. main :: IO () main = do txt <- TIO.readFile "./benchmark/benchmark.toml" Right tomlandVal <- pure $ Tomland.parse txt Right htomlVal <- pure $ Htoml.parse txt Right htomlMegaVal <- pure $ HtomlM.parse txt Right tomlParserVal <- pure $ TomlParser.parse txt defaultMain [ bgroup "Parse" [ bench "tomland" $ nf Tomland.parse txt , bench "htoml" $ nf Htoml.parse txt , bench "htoml-megaparsec" $ nf HtomlM.parse txt , bench "toml-parser" $ nf TomlParser.parse txt ] , bgroup "Convert" [ bench "tomland" $ nf Tomland.convert tomlandVal , bench "htoml" $ nf Htoml.convert htomlVal , bench "htoml-megaparsec" $ nf HtomlM.convert htomlMegaVal , bench "toml-parser" $ nf TomlParser.convert tomlParserVal ] , bgroup "Decode" [ bench "tomland" $ nf Tomland.decode txt , bench "htoml" $ nf Htoml.decode txt , bench "htoml-megaparsec" $ nf HtomlM.decode txt , bench "toml-parser" $ nf TomlParser.decode txt ] ]