module Language.Futhark.ParserBenchmarks (benchmarks) where import Criterion (Benchmark, bench, bgroup, whnf) import Data.Either (fromRight) import Data.Text qualified as T import Futhark.Util (showText) import Language.Futhark.Parser (parseExp) bigArray :: Int -> T.Text bigArray :: Int -> Text bigArray Int n = Text "[" Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text -> [Text] -> Text T.intercalate Text "," ((Int -> Text) -> [Int] -> [Text] forall a b. (a -> b) -> [a] -> [b] map ((Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text "i32") (Text -> Text) -> (Int -> Text) -> Int -> Text forall b c a. (b -> c) -> (a -> b) -> a -> c . Int -> Text forall a. Show a => a -> Text showText) [Int 0 .. Int n Int -> Int -> Int forall a. Num a => a -> a -> a - Int 1]) Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text "]" benchmarks :: Benchmark benchmarks :: Benchmark benchmarks = String -> [Benchmark] -> Benchmark bgroup String "Language.Futhark.Parser" [ Int -> Benchmark benchIntArray Int 10000, Int -> Benchmark benchIntArray Int 100000, Int -> Benchmark benchIntArray Int 1000000 ] where benchIntArray :: Int -> Benchmark benchIntArray Int n = String -> Benchmarkable -> Benchmark bench (String "[" String -> String -> String forall a. Semigroup a => a -> a -> a <> Int -> String forall a. Show a => a -> String show Int n String -> String -> String forall a. Semigroup a => a -> a -> a <> String "]i32") (Benchmarkable -> Benchmark) -> Benchmarkable -> Benchmark forall a b. (a -> b) -> a -> b $ (Text -> UncheckedExp) -> Text -> Benchmarkable forall a b. (a -> b) -> a -> Benchmarkable whnf (UncheckedExp -> Either SyntaxError UncheckedExp -> UncheckedExp forall b a. b -> Either a b -> b fromRight (String -> UncheckedExp forall a. HasCallStack => String -> a error String "parse error") (Either SyntaxError UncheckedExp -> UncheckedExp) -> (Text -> Either SyntaxError UncheckedExp) -> Text -> UncheckedExp forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> Text -> Either SyntaxError UncheckedExp parseExp String "") (Int -> Text bigArray Int n)