From 48a75e9a072c4b4135e6991a37a01ba431a2beef Mon Sep 17 00:00:00 2001 From: Ilya Matveev Date: Mon, 19 Aug 2019 17:40:36 +0700 Subject: [PATCH] Perf: Don't include kliopt sources into benchmarks --- .../kotlin/benchmark/BenchmarkingPlugin.kt | 39 +++++++++++++++++++ performance/cinterop/build.gradle.kts | 2 + performance/framework/build.gradle | 2 - performance/numerical/build.gradle.kts | 8 ++-- performance/objcinterop/build.gradle.kts | 2 + performance/ring/build.gradle.kts | 8 ++-- performance/swiftinterop/build.gradle | 8 +++- 7 files changed, 59 insertions(+), 10 deletions(-) diff --git a/build-tools/src/main/kotlin/org/jetbrains/kotlin/benchmark/BenchmarkingPlugin.kt b/build-tools/src/main/kotlin/org/jetbrains/kotlin/benchmark/BenchmarkingPlugin.kt index 80c341db02d..149bbaca447 100644 --- a/build-tools/src/main/kotlin/org/jetbrains/kotlin/benchmark/BenchmarkingPlugin.kt +++ b/build-tools/src/main/kotlin/org/jetbrains/kotlin/benchmark/BenchmarkingPlugin.kt @@ -1,9 +1,12 @@ package org.jetbrains.kotlin.benchmark +import groovy.lang.Closure import org.gradle.api.NamedDomainObjectContainer import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.api.artifacts.Dependency import org.gradle.jvm.tasks.Jar +import org.gradle.util.ConfigureUtil import org.jetbrains.kotlin.* import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget @@ -77,6 +80,37 @@ open class BenchmarkExtension @Inject constructor(val project: Project) { var mingwSrcDirs: Collection = emptyList() var posixSrcDirs: Collection = emptyList() var linkerOpts: Collection = emptyList() + + val dependencies: BenchmarkDependencies = BenchmarkDependencies() + + fun dependencies(action: BenchmarkDependencies.() -> Unit) = + dependencies.action() + + fun dependencies(action: Closure<*>) { + ConfigureUtil.configure(action, dependencies) + } + + inner class BenchmarkDependencies { + private val sourceSets: NamedDomainObjectContainer + get() = project.kotlin.sourceSets + + fun project(path: String): Dependency = project.dependencies.project(mapOf("path" to path)) + + fun project(path: String, configuration: String): Dependency = + project.dependencies.project(mapOf("path" to path, "configuration" to configuration)) + + fun common(notation: Any) = sourceSets.commonMain.dependencies { + implementation(notation) + } + + fun jvm(notation: Any) = sourceSets.jvmMain.dependencies { + implementation(notation) + } + + fun native(notation: Any) = sourceSets.nativeMain.dependencies { + implementation(notation) + } + } } /** @@ -101,6 +135,11 @@ open class BenchmarkingPlugin: Plugin { implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinStdlibVersion") } + project.configurations.getByName(nativeMain.implementationConfigurationName).apply { + // Exclude dependencies already included into K/N distribution (aka endorsed libraries). + exclude(mapOf("module" to "kliopt")) + } + repositories.maven { it.setUrl(kotlinStdlibRepo) } diff --git a/performance/cinterop/build.gradle.kts b/performance/cinterop/build.gradle.kts index 736662771b3..d9cdb7fccc7 100644 --- a/performance/cinterop/build.gradle.kts +++ b/performance/cinterop/build.gradle.kts @@ -16,6 +16,8 @@ benchmark { nativeSrcDirs = listOf("src/main/kotlin-native", "../shared/src/main/kotlin-native/common") mingwSrcDirs = listOf("src/main/kotlin-native", "../shared/src/main/kotlin-native/mingw") posixSrcDirs = listOf("src/main/kotlin-native", "../shared/src/main/kotlin-native/posix") + + dependencies.common(project(":endorsedLibraries:kliopt")) } val native = kotlin.targets.getByName("native") as KotlinNativeTarget diff --git a/performance/framework/build.gradle b/performance/framework/build.gradle index 05b6c7b9cfa..54480218d6d 100644 --- a/performance/framework/build.gradle +++ b/performance/framework/build.gradle @@ -37,8 +37,6 @@ kotlin { } kotlin.srcDir "$toolsPath/benchmarks/shared/src" kotlin.srcDir "$toolsPath/benchmarksAnalyzer/src/main/kotlin" - kotlin.srcDir "$rootProject.projectDir/endorsedLibraries/kliopt/src/main/kotlin" - kotlin.srcDir "$rootProject.projectDir/endorsedLibraries/kliopt/src/main/kotlin-native" kotlin.srcDir "$toolsPath/benchmarksAnalyzer/src/main/kotlin-native" } } diff --git a/performance/numerical/build.gradle.kts b/performance/numerical/build.gradle.kts index adfb2a1dce1..00a7aa3604c 100644 --- a/performance/numerical/build.gradle.kts +++ b/performance/numerical/build.gradle.kts @@ -14,12 +14,14 @@ plugins { benchmark { applicationName = "Numerical" - commonSrcDirs = listOf("src/main/kotlin", "../../tools/benchmarks/shared/src", "../shared/src/main/kotlin", "../../endorsedLibraries/kliopt/src/main/kotlin") - jvmSrcDirs = listOf("src/main/kotlin-jvm", "../shared/src/main/kotlin-jvm", "../../endorsedLibraries/kliopt/src/main/kotlin-jvm") - nativeSrcDirs = listOf("src/main/kotlin-native", "../shared/src/main/kotlin-native/common", "../../endorsedLibraries/kliopt/src/main/kotlin-native") + commonSrcDirs = listOf("src/main/kotlin", "../../tools/benchmarks/shared/src", "../shared/src/main/kotlin") + jvmSrcDirs = listOf("src/main/kotlin-jvm", "../shared/src/main/kotlin-jvm") + nativeSrcDirs = listOf("src/main/kotlin-native", "../shared/src/main/kotlin-native/common") mingwSrcDirs = listOf("../shared/src/main/kotlin-native/mingw") posixSrcDirs = listOf("../shared/src/main/kotlin-native/posix") linkerOpts = listOf("$buildDir/pi.o") + + dependencies.common(project(":endorsedLibraries:kliopt")) } val compileLibary by tasks.creating { diff --git a/performance/objcinterop/build.gradle.kts b/performance/objcinterop/build.gradle.kts index 1af47bdeb9a..3fadb4b7071 100644 --- a/performance/objcinterop/build.gradle.kts +++ b/performance/objcinterop/build.gradle.kts @@ -20,6 +20,8 @@ benchmark { mingwSrcDirs = listOf("src/main/kotlin-native", "../shared/src/main/kotlin-native/mingw") posixSrcDirs = listOf("src/main/kotlin-native", "../shared/src/main/kotlin-native/posix") linkerOpts = listOf("-L$buildDir", "-lcomplexnumbers") + + dependencies.common(project(":endorsedLibraries:kliopt")) } val compileLibary by tasks.creating { diff --git a/performance/ring/build.gradle.kts b/performance/ring/build.gradle.kts index e87ec9f2bf9..b6b00d05594 100644 --- a/performance/ring/build.gradle.kts +++ b/performance/ring/build.gradle.kts @@ -9,9 +9,11 @@ plugins { benchmark { applicationName = "Ring" - commonSrcDirs = listOf("../../tools/benchmarks/shared/src", "src/main/kotlin", "../shared/src/main/kotlin", "../../endorsedLibraries/kliopt/src/main/kotlin") - jvmSrcDirs = listOf("src/main/kotlin-jvm", "../shared/src/main/kotlin-jvm", "../../endorsedLibraries/kliopt/src/main/kotlin-jvm") - nativeSrcDirs = listOf("src/main/kotlin-native", "../shared/src/main/kotlin-native/common", "../../endorsedLibraries/kliopt/src/main/kotlin-native") + commonSrcDirs = listOf("../../tools/benchmarks/shared/src", "src/main/kotlin", "../shared/src/main/kotlin") + jvmSrcDirs = listOf("src/main/kotlin-jvm", "../shared/src/main/kotlin-jvm") + nativeSrcDirs = listOf("src/main/kotlin-native", "../shared/src/main/kotlin-native/common") mingwSrcDirs = listOf("src/main/kotlin-native", "../shared/src/main/kotlin-native/mingw") posixSrcDirs = listOf("src/main/kotlin-native", "../shared/src/main/kotlin-native/posix") + + dependencies.common(project(":endorsedLibraries:kliopt")) } diff --git a/performance/swiftinterop/build.gradle b/performance/swiftinterop/build.gradle index 022780bd89f..435f87a3ca4 100644 --- a/performance/swiftinterop/build.gradle +++ b/performance/swiftinterop/build.gradle @@ -36,17 +36,21 @@ kotlin { commonMain { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-common:$kotlinVersion" + implementation project(":endorsedLibraries:kliopt") } kotlin.srcDir "src" kotlin.srcDir "../shared/src/main/kotlin" - kotlin.srcDir "$rootProject.projectDir/endorsedLibraries/kliopt/src/main/kotlin" kotlin.srcDir "$toolsPath/benchmarks/shared/src/main/kotlin" } macosMain { dependsOn commonMain kotlin.srcDir "../shared/src/main/kotlin-native/common" kotlin.srcDir "../shared/src/main/kotlin-native/posix" - kotlin.srcDir "$rootProject.projectDir/endorsedLibraries/kliopt/src/main/kotlin-native" + + // Exclude kliopt added in commonMain dependencies and inherited by macosMain. + configurations.getByName(implementationConfigurationName) { + exclude module: "kliopt" + } } }