From f6d9867fa47e41e48c47da58a04dcec9f7e9b4e3 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Wed, 8 Apr 2020 12:35:40 +0300 Subject: [PATCH] Add benchmark for plusAssign desugaring #KT-38101 --- .../PlusAssignOperatorDesugaringBenchmark.kt | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 benchmarks/src/org/jetbrains/kotlin/benchmarks/PlusAssignOperatorDesugaringBenchmark.kt diff --git a/benchmarks/src/org/jetbrains/kotlin/benchmarks/PlusAssignOperatorDesugaringBenchmark.kt b/benchmarks/src/org/jetbrains/kotlin/benchmarks/PlusAssignOperatorDesugaringBenchmark.kt new file mode 100644 index 00000000000..64588ffd6f9 --- /dev/null +++ b/benchmarks/src/org/jetbrains/kotlin/benchmarks/PlusAssignOperatorDesugaringBenchmark.kt @@ -0,0 +1,48 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.benchmarks + +import org.openjdk.jmh.annotations.* +import org.openjdk.jmh.infra.Blackhole +import java.util.concurrent.TimeUnit + +@BenchmarkMode(Mode.AverageTime) +@OutputTimeUnit(TimeUnit.MILLISECONDS) +@State(Scope.Benchmark) +open class PlusAssignOperatorDesugaringBenchmark : AbstractInferenceBenchmark() { + @Param("9", "10", "11", "12", "13", "14") + private var size: Int = 0 + + @Benchmark + fun benchmark(bh: Blackhole) { + analyzeGreenFile(bh) + } + + override fun buildText(): String = buildString { + appendln( + """ + class A { + operator fun plus(other: (Int) -> T): A = this + operator fun plusAssign(other: (String) -> T) {} + } + """.trimIndent() + ) + appendln("fun test() {") + appendln("var a = A()") + for (i in 1..size) { + appendln("a += {") + } + for (i in 1..size) { + appendln( + """ + it.inc() + 1 + } + """.trimIndent()) + } + appendln() + } +} \ No newline at end of file