File tree 1 file changed +33
-0
lines changed
benchmarks/src/jmh/kotlin/benchmarks
1 file changed +33
-0
lines changed Original file line number Diff line number Diff line change
1
+ /*
2
+ * Copyright 2016-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
3
+ */
4
+
5
+ package benchmarks
6
+
7
+ import kotlinx.coroutines.experimental.*
8
+ import kotlinx.coroutines.experimental.channels.*
9
+ import org.openjdk.jmh.annotations.*
10
+ import java.util.concurrent.*
11
+ import kotlin.coroutines.experimental.*
12
+
13
+ @Warmup(iterations = 10 , time = 1 )
14
+ @Measurement(iterations = 10 , time = 1 )
15
+ @BenchmarkMode(Mode .AverageTime )
16
+ @OutputTimeUnit(TimeUnit .MILLISECONDS )
17
+ @State(Scope .Benchmark )
18
+ @Fork(2 )
19
+ open class ChannelSinkBenchmark {
20
+
21
+ @Benchmark
22
+ fun channelPipeline (): Int = runBlocking {
23
+ Channel
24
+ .range(1 , 1_000_000 , Unconfined )
25
+ .filter(Unconfined ) { it % 4 == 0 }
26
+ .fold(0 ) { a, b -> a + b }
27
+ }
28
+
29
+ private fun Channel.Factory.range (start : Int , count : Int , context : CoroutineContext ) = produce(context) {
30
+ for (i in start until (start + count))
31
+ send(i)
32
+ }
33
+ }
You can’t perform that action at this time.
0 commit comments