@@ -7,6 +7,7 @@ package benchmarks
7
7
import benchmarks.common.*
8
8
import kotlinx.coroutines.*
9
9
import kotlinx.coroutines.channels.*
10
+ import kotlinx.coroutines.scheduling.*
10
11
import kotlinx.coroutines.sync.*
11
12
import org.openjdk.jmh.annotations.*
12
13
import java.util.concurrent.*
@@ -19,17 +20,16 @@ import java.util.concurrent.*
19
20
@State(Scope .Benchmark )
20
21
open class SemaphoreBenchmark {
21
22
@Param
22
- private var _1_dispatcher : SemaphoreBenchDispatcherCreator = SemaphoreBenchDispatcherCreator .FORK_JOIN
23
+ private var _1_dispatcher : SemaphoreBenchDispatcherCreator = SemaphoreBenchDispatcherCreator .DEFAULT
23
24
24
25
@Param(" 0" , " 1000" )
25
26
private var _2_coroutines : Int = 0
26
27
27
28
@Param(" 1" , " 2" , " 4" , " 8" , " 32" , " 128" , " 100000" )
28
29
private var _3_maxPermits : Int = 0
29
30
30
- @Param(" 1" , " 2" , " 4" ) // local machine
31
- // @Param("1", "2", "4", "8", "16", "32", "64", "128", "144") // dasquad
32
- // @Param("1", "2", "4", "8", "16", "32", "64", "96") // Google Cloud
31
+ @Param(" 1" , " 2" , " 4" , " 8" , " 16" ) // local machine
32
+ // @Param("1", "2", "4", "8", "16", "32", "64", "128") // Server
33
33
private var _4_parallelism : Int = 0
34
34
35
35
private lateinit var dispatcher: CoroutineDispatcher
@@ -80,10 +80,11 @@ open class SemaphoreBenchmark {
80
80
}
81
81
82
82
enum class SemaphoreBenchDispatcherCreator (val create : (parallelism: Int ) -> CoroutineDispatcher ) {
83
- FORK_JOIN ({ parallelism -> ForkJoinPool (parallelism).asCoroutineDispatcher() }),
84
- EXPERIMENTAL ({ parallelism -> Dispatchers .Default }) // TODO doesn't take parallelism into account
83
+ // FORK_JOIN({ parallelism -> ForkJoinPool(parallelism).asCoroutineDispatcher() }),
84
+ @Suppress(" INVISIBLE_MEMBER" , " INVISIBLE_REFERENCE" )
85
+ DEFAULT ({ parallelism -> ExperimentalCoroutineDispatcher (corePoolSize = parallelism, maxPoolSize = parallelism) })
85
86
}
86
87
87
- private const val WORK_INSIDE = 80
88
- private const val WORK_OUTSIDE = 40
89
- private const val BATCH_SIZE = 1000000
88
+ private const val WORK_INSIDE = 50
89
+ private const val WORK_OUTSIDE = 50
90
+ private const val BATCH_SIZE = 100000
0 commit comments