-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathchan-benchmarks.cabal
143 lines (126 loc) · 4.81 KB
/
chan-benchmarks.cabal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
-- Initial chan-benchmarks.cabal generated by cabal init. For further
-- documentation, see http://haskell.org/cabal/users-guide/
name: chan-benchmarks
version: 0.1.0.0
license: BSD3
license-file: LICENSE
author: Brandon Simmons
maintainer: [email protected]
build-type: Simple
cabal-version: >=1.10
-- We provide two executables which run on a single core and all available
-- cores, respectively. Benchmarks to be tested live in Benchmarks.hs.
-- There is some overlap in which tests are run in which, but we omit tests
-- from bench-multi where we suspect running on multiple cores only confuses
-- things, and omit tests from bench-single where a test on a single core wouldn't
-- be relevant (e.g. testing contention or the scheduler directly)
executable bench-single
main-is: Main1.hs
other-modules: Benchmarks
build-depends: base >=4.6
, stm
, async
-- random number generation:
, random
, mwc-random
, criterion
, primitive > 0.5.2.0
, atomic-primops == 0.6
-- other chans:
, chan-split-fast
, split-channel
--TODO (other FIFO chans/queues with blocking read):
--, cml
, chaselev-deque
-- arrays:
, array
, vector
-- time:
, old-time
, time
-- Since this doesn't support 7.8 yet
if impl(ghc < 7.8.0)
build-depends: lockfree-queue == 0.2.3
-- Still testing the threaded runtime, but removing OS thread scheduling from
-- the picture:
ghc-options: -O2 -rtsopts -threaded -with-rtsopts=-N1
ghc-options: -fforce-recomp
default-language: Haskell2010
default-extensions: CPP
executable bench-multi
main-is: MainN.hs
other-modules: Benchmarks
build-depends: base >=4.6
, stm
, async
, criterion
, primitive > 0.5.2.0
, atomic-primops == 0.6
-- other chans:
, chan-split-fast
, split-channel
--TODO (other FIFO chans/queues with blocking read):
--, cml
, chaselev-deque
-- Since this doesn't support 7.8 yet
if impl(ghc < 7.8.0)
build-depends: lockfree-queue == 0.2.3
-- We fix this to 2 cores, so that we can be a little less careful about how
-- we write and interpret our tests.
-- These would be interesting to play with on a >2 core machine:
-- -feager-blackholing -qa -qg1 -fllvm
ghc-options: -O2 -rtsopts -threaded -with-rtsopts=-N2
ghc-options: -fforce-recomp
default-language: Haskell2010
default-extensions: CPP
-- --------------
executable test-atomics
main-is: TestAtomics.hs
build-depends: base >=4.6
, stm
, async
, atomic-primops == 0.6
, containers
ghc-options: -O2 -rtsopts -threaded -with-rtsopts=-N2
default-language: Haskell2010
-- --------------
executable experiment-mvar-fairness
main-is: MVarExperiment.hs
other-modules: Benchmarks
build-depends: base >=4.6
, stm
, async
-- random number generation:
, random
, mwc-random
, criterion
, primitive > 0.5.2.0
, atomic-primops == 0.6
, chan-split-fast
, split-channel
ghc-options: -O2 -rtsopts -threaded -with-rtsopts=-N1
default-language: Haskell2010
executable experiment-tvar-interleaving
main-is: TVarExperiment.hs
other-modules: Benchmarks
build-depends: base >=4.6
, stm
, async
-- random number generation:
, random
, mwc-random
, criterion
, primitive > 0.5.2.0
, atomic-primops == 0.6
, chan-split-fast
, split-channel
ghc-options: -O2 -rtsopts -threaded -with-rtsopts=-N2
default-language: Haskell2010
executable retry-experiment
main-is: RetryExperiment.hs
other-modules: Benchmarks
build-depends: base >=4.6
, stm
ghc-options: -O2 -rtsopts -threaded -with-rtsopts=-N2
ghc-options: -Wall
default-language: Haskell2010