Perf: Don't include kliopt sources into benchmarks

This commit is contained in:
Ilya Matveev
2019-08-19 17:40:36 +07:00
committed by Ilya Matveev
parent 53d96aba4c
commit 48a75e9a07
7 changed files with 59 additions and 10 deletions
@@ -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<Any> = emptyList()
var posixSrcDirs: Collection<Any> = emptyList()
var linkerOpts: Collection<String> = 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<KotlinSourceSet>
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<Project> {
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)
}
+2
View File
@@ -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
-2
View File
@@ -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"
}
}
+5 -3
View File
@@ -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 {
+2
View File
@@ -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 {
+5 -3
View File
@@ -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"))
}
+6 -2
View File
@@ -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"
}
}
}