gl-block-1.1: bench/Bench.hs
{-# LANGUAGE ImportQualifiedPost #-}
import Test.Tasty.Bench (Benchmark, bcompare, bench, bgroup, defaultMain, nf)
import Bench.Struct
import Data.Vector.Storable qualified as Storable
main :: IO ()
main =
defaultMain
[ bgroup
"struct"
[ sizes "10" 10
, sizes "1000" 1000
, sizes "1000000" 1000000
]
]
sizes :: String -> Int -> Benchmark
sizes name n =
bgroup
name
[ bench "manual" $
nf (`Storable.replicate` structManual) n
, vsManual "packed" $
nf (`Storable.replicate` structPacked) n
, vsManual "std140" $
nf (`Storable.replicate` struct140) n
, vsManual "std430" $
nf (`Storable.replicate` struct430) n
]
where
vsManual label =
bcompare ("$NF == \"manual\" && $(NF-1) == \"" <> name <> "\"")
. bench label