packages feed

GPipe-GLFW4-2.0.0: bench/Graphics/GPipe/BufferBench.hs

{-# LANGUAGE ScopedTypeVariables #-}
module Graphics.GPipe.BufferBench (suite) where

import           Criterion.Main              (Benchmark, bench, bgroup, whnfIO)

import           Graphics.GPipe.Buffer

import           Graphics.GPipe.Context      (runContextT)
import qualified Graphics.GPipe.Context.GLFW as GLFW


benchWriteBuffer :: Int -> IO Int
benchWriteBuffer l =
    runContextT GLFW.defaultHandleConfig $ do
        buf :: Buffer os (B Float) <- newBuffer l
        writeBuffer buf 0 [0..fromIntegral l]
        return $ bufferLength buf


suite :: IO Benchmark
suite = return $ bgroup "Buffer"
    [ bgroup "writeBuffer"
        [ bench "1000000"  $ whnfIO (benchWriteBuffer 1000000)
        , bench "10000000" $ whnfIO (benchWriteBuffer 10000000)
        ]
    ]