ghc-trace-events-0.0.0: benchmarks/bench-trace.hs
{-# LANGUAGE OverloadedStrings #-}
import Criterion.Main
import qualified Debug.Trace as Base
import qualified Debug.Trace.ByteString as B
import qualified Debug.Trace.String as S
import qualified Debug.Trace.Text as T
import qualified Debug.Trace.Internal as I
main :: IO ()
main = do
putStrLn $ "userTracingEnabled: " ++ show I.userTracingEnabled
defaultMain
[ bgroup "traceEvent"
[ bench "Base" $ whnf (Base.traceEvent "Hello") ()
, bench "String" $ whnf (S.traceEvent "Hello") ()
, bench "ByteString" $ whnf (B.traceEvent "Hello") ()
, bench "ByteString/Unsafe" $ whnf (B.unsafeTraceEvent "Hello") ()
, bench "Text" $ whnf (T.traceEvent "Hello") ()
]
, bgroup "traceEventIO"
[ bench "Base" $ nfIO $ Base.traceEventIO "Hello"
, bench "String" $ nfIO $ S.traceEventIO "Hello"
, bench "ByteString" $ nfIO $ B.traceEventIO "Hello"
, bench "ByteString/Unsafe" $ nfIO $ B.unsafeTraceEventIO "Hello"
, bench "Text" $ nfIO $ T.traceEventIO "Hello"
]
, bgroup "traceMarker"
[ bench "Base" $ whnf (Base.traceMarker "Hello") ()
, bench "String" $ whnf (S.traceMarker "Hello") ()
, bench "ByteString" $ whnf (B.traceMarker "Hello") ()
, bench "ByteString/Unsafe" $ whnf (B.unsafeTraceMarker "Hello") ()
, bench "Text" $ whnf (T.traceMarker "Hello") ()
]
, bgroup "traceMarkerIO"
[ bench "Base" $ nfIO $ Base.traceMarkerIO "Hello"
, bench "String" $ nfIO $ S.traceMarkerIO "Hello"
, bench "ByteString" $ nfIO $ B.traceMarkerIO "Hello"
, bench "ByteString/Unsafe" $ nfIO $ B.unsafeTraceMarkerIO "Hello"
, bench "Text" $ nfIO $ T.traceMarkerIO "Hello"
]
]