packages feed

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"
      ]
    ]