1
1
package measurements
2
2
3
+ import language .experimental .captureChecking
4
+
3
5
import gears .async .default .given
4
6
import gears .async .{Async , BufferedChannel , ChannelMultiplexer , Future , SyncChannel }
5
7
@@ -65,9 +67,12 @@ def measureIterations[T](action: () => T): Int =
65
67
66
68
val c1 : Double = measureIterations : () =>
67
69
Async .blocking:
68
- Async .race(Future { Thread .sleep(10 ) }, Future { Thread .sleep(100 ) }, Future { Thread .sleep(50 ) }).await
69
- Async .race(Future { Thread .sleep(50 ) }, Future { Thread .sleep(10 ) }, Future { Thread .sleep(100 ) }).await
70
- Async .race(Future { Thread .sleep(100 ) }, Future { Thread .sleep(50 ) }, Future { Thread .sleep(10 ) }).await
70
+ val r1 = Async .race(Future { Thread .sleep(10 ) }, Future { Thread .sleep(100 ) }, Future { Thread .sleep(50 ) })
71
+ r1.await
72
+ val r2 = Async .race(Future { Thread .sleep(50 ) }, Future { Thread .sleep(10 ) }, Future { Thread .sleep(100 ) })
73
+ r2.await
74
+ val r3 = Async .race(Future { Thread .sleep(100 ) }, Future { Thread .sleep(50 ) }, Future { Thread .sleep(10 ) })
75
+ r3.await
71
76
72
77
val c2 : Double = measureIterations : () =>
73
78
Async .blocking:
@@ -95,11 +100,11 @@ def measureIterations[T](action: () => T): Int =
95
100
println(" Non-raced futures per second: " + c2_per_second_adjusted)
96
101
println(" Overhead: " + (c2_per_second_adjusted / c1_per_second_adjusted))
97
102
98
- /* Linux
103
+ /* Linux
99
104
Raced futures awaited per second: 15.590345727332032
100
105
Non-raced futures per second: 15.597976831457009
101
106
Overhead: 1.0004894762604013
102
- */
107
+ */
103
108
104
109
@ main def measureRaceOverheadVsJava (): Unit =
105
110
given ExecutionContext = ExecutionContext .global
@@ -148,11 +153,11 @@ def measureIterations[T](action: () => T): Int =
148
153
println(" Java threads awaited per second: " + c2_per_second_adjusted)
149
154
println(" Overhead: " + (c2_per_second_adjusted / c1_per_second_adjusted))
150
155
151
- /* Linux
156
+ /* Linux
152
157
Raced futures awaited per second: 15.411487529449996
153
158
Java threads awaited per second: 15.671210243700953
154
159
Overhead: 1.0168525402726147
155
- */
160
+ */
156
161
157
162
@ main def channelsVsJava (): Unit =
158
163
given ExecutionContext = ExecutionContext .global
@@ -305,13 +310,13 @@ def measureIterations[T](action: () => T): Int =
305
310
Thread .sleep(500 )
306
311
println(" ChannelMultiplexer over BufferedChannels sends per second: " + cmOverBufferedSendsPerSecond)
307
312
308
- /* Linux
313
+ /* Linux
309
314
Java "channel" sends per second: 8691652
310
315
SyncChannel sends per second: 319371.0
311
316
BufferedChannel sends per second: 308286.0
312
317
ChannelMultiplexer over SyncChannels sends per second: 155737.0
313
318
ChannelMultiplexer over BufferedChannels sends per second: 151995.0
314
- */
319
+ */
315
320
316
321
/** Warmup for 10 seconds and benchmark for 60 seconds.
317
322
*/
@@ -490,7 +495,7 @@ def measureRunTimes[T](action: () => T): TimeMeasurementResult =
490
495
dataAlmostJson.append(" }" )
491
496
println(dataAlmostJson.toString)
492
497
493
- /* Linux
498
+ /* Linux
494
499
{
495
500
"File writing": {
496
501
@@ -506,5 +511,4 @@ def measureRunTimes[T](action: () => T): TimeMeasurementResult =
506
511
"Java Files.write": [18.96376850600001, 0.20493288428568684],
507
512
},
508
513
},
509
- }
510
- */
514
+ } */
0 commit comments