Created
January 17, 2019 23:15
-
-
Save DennisVDB/6cba4de4a04480433b927a4c34bbb9ff to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package benchmarks | |
import java.util.concurrent.TimeUnit | |
import org.openjdk.jmh.annotations._ | |
@BenchmarkMode(Array(Mode.AverageTime)) | |
@OutputTimeUnit(TimeUnit.MICROSECONDS) | |
@State(Scope.Thread) | |
class FusionBench { | |
var list1: List[Int] = _ | |
var list2: List[Int] = _ | |
var str1: Stream[Int] = _ | |
var seq1: Seq[Int] = _ | |
var arr1: Array[Int] = _ | |
var iterable1: Iterable[Int] = _ | |
var iterator1: Iterator[Int] = _ | |
@Setup | |
def setup: Unit = { | |
list1 = List.range(10000, 1, -1) | |
list2 = List.range(10000, 1, -1) | |
str1 = Stream.range(10000, 1, -1) | |
seq1 = Seq.range(10000, 1, -1) | |
arr1 = Array.range(10000, 1, -1) | |
iterable1 = Iterable.range(10000, 1, -1) | |
iterator1 = Iterator.range(10000, 1, -1) | |
} | |
@Benchmark | |
def listFusion: List[Int] = list1.map(_ + 1).filter(_ % 2 == 0).map(_ * 2) | |
@Benchmark | |
def listViaIteratorFusion: List[Int] = list2.toIterator.map(_ + 1).filter(_ % 2 == 0).map(_ * 2).toList | |
@Benchmark | |
def streamFusion: Stream[Int] = str1.map(_ + 1).filter(_ % 2 == 0).map(_ * 2).force | |
@Benchmark | |
def seqFusion: Seq[Int] = seq1.map(_ + 1).filter(_ % 2 == 0).map(_ * 2) | |
@Benchmark | |
def arrFusion: Seq[Int] = arr1.map(_ + 1).filter(_ % 2 == 0).map(_ * 2) | |
@Benchmark | |
def iterableFusion: Iterable[Int] = iterable1.map(_ + 1).filter(_ % 2 == 0).map(_ * 2) | |
@Benchmark | |
def iteratorFusion: Iterator[Int] = iterator1.map(_ + 1).filter(_ % 2 == 0).map(_ * 2) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment