@@ -31,30 +31,55 @@ main = do
3131 -- degradation, so we should keep that in account when comparing.
3232 let as = asyncly_basic
3333 defaultMain [
34− bgroup "basic"
35− [ bench "asyncly-serial" $ nfIO (as (>>=) (A.<>))
36− , bench "asyncly-interleaved" $ nfIO (as (>>=) (A.<=>))
37− , bench "asyncly-serial-fairbind" $ nfIO (as (A.>->) (A.<>))
38− , bench "asyncly-interleaved-fairbind" $ nfIO (as (A.>->) (A.<=>))
39− , bench "asyncly-parleft" $ nfIO (as (>>=) (A.<|))
40− , bench "asyncly-parinterleaved" $ nfIO (as (>>=) (A.<|>))
41− , bench "asyncly-parleft-fairbind" $ nfIO (as (A.>->) (A.<|))
42− , bench "asyncly-parinterleaved-fairbind" $ nfIO (as (A.>->) (A.<|>))
43− , bench "asyncly-serial-nil" $ nfIO (asyncly_nil (A.<>))
44− , bench "asyncly-interleaved-nil" $ nfIO (asyncly_nil (A.<=>))
45− , bench "asyncly-parleft-nil" $ nfIO (asyncly_nil (A.<|))
46− , bench "asyncly-parinterleaved-nil" $ nfIO (asyncly_nil (A.<|>))
34+ bgroup "asyncly"
35+ [ bgroup "serial bind"
36+ [ bench "serial" $ nfIO (as (>>=) (A.<>))
37+ , bench "fair serial" $ nfIO (as (>>=) (A.<=>))
38+ , bench "left parallel" $ nfIO (as (>>=) (A.<|))
39+ , bench "fair parallel" $ nfIO (as (>>=) (A.<|>))
40+ ]
41+
42+ , bgroup "fair bind"
43+ [ bench "serial" $ nfIO (as (A.>->) (A.<>))
44+ , bench "fair serial" $ nfIO (as (A.>->) (A.<=>))
45+ , bench "left parallel" $ nfIO (as (A.>->) (A.<|))
46+ , bench "fair parallel" $ nfIO (as (A.>->) (A.<|>))
47+ ]
48+
49+ , bgroup "parallel bind"
50+ [ bench "serial" $ nfIO (as (A.>>|) (A.<>))
51+ , bench "fair serial" $ nfIO (as (A.>>|) (A.<=>))
52+ , bench "left parallel" $ nfIO (as (A.>>|) (A.<|))
53+ , bench "fair parallel" $ nfIO (as (A.>>|) (A.<|>))
54+ ]
55+
56+ , bgroup "fair parallel bind"
57+ [ bench "serial" $ nfIO (as (A.>|>) (A.<>))
58+ , bench "fair serial" $ nfIO (as (A.>|>) (A.<=>))
59+ , bench "left parallel" $ nfIO (as (A.>|>) (A.<|))
60+ , bench "fair parallel" $ nfIO (as (A.>|>) (A.<|>))
61+ ]
62+
63+ -- Benchmark smallest possible actions composed together
64+ , bgroup "serial bind nil"
65+ [ bench "serial" $ nfIO (asyncly_nil (A.<>))
66+ , bench "fair serial" $ nfIO (asyncly_nil (A.<=>))
67+ , bench "left parallel" $ nfIO (asyncly_nil (A.<|))
68+ , bench "fair parallel" $ nfIO (asyncly_nil (A.<|>))
69+ ]
70+ ]
4771#ifdef EXTRA_BENCHMARKS
4872#if MIN_VERSION_transient(0,5,1)
49− , bench "transient" $ nfIO transient_basic
73+ , bgroup "others"
74+ [ bench "transient" $ nfIO transient_basic
5075 , bench "transient-nil" $ nfIO transient_nil
5176#endif
5277 , bench "logict" $ nfIO logict_basic
5378 , bench "list-t" $ nfIO list_t_basic
5479 , bench "simple-conduit" $ nfIO simple_conduit_basic
5580 , bench "machines" $ nfIO machines_basic
56−#endif
5781 ]
82+#endif
5883 ]
5984
6085{-# INLINABLE map #-}