forked from joel-jeremy/java-config-library-benchmarks
/
build.gradle
80 lines (66 loc) · 2.33 KB
/
build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
plugins {
id 'me.champeau.jmh' version '0.7.2'
id 'io.morethan.jmhreport' version "0.9.0"
}
apply plugin: 'io.morethan.jmhreport'
allprojects {
group = 'io.github.joeljeremy7.java.config.lib.benchmarks'
version = '1.0.0-SNAPSHOT'
repositories {
mavenLocal()
mavenCentral()
}
}
def javaProjects = subprojects.findAll { new File(it.projectDir, "src").exists() }
configure(javaProjects) {
apply plugin: 'java-library'
apply plugin: 'me.champeau.jmh'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
jmh {
jmhVersion = '1.36'
// humanOutputFile = project.file("${project.buildDir}/reports/jmh/human.txt")
resultsFile = project.file("${project.buildDir}/reports/jmh/results.json")
resultFormat = 'JSON'
jvmArgs = [ '-Xmx2G' ]
failOnError = true
// Warmup
warmup = '5s'
warmupIterations = 3
// Benchmarks
timeOnIteration = '5s'
iterations = 5
fork = 2
}
}
import groovy.json.*;
def mergedJmhResultsDir = "${project.rootDir}/merged-jmh-results"
tasks.register('mergeJmhResults') {
doLast {
mkdir mergedJmhResultsDir
def mergedResultsFile = new File("${mergedJmhResultsDir}/merged-jmh-results.json");
def slurper = new JsonSlurper()
def mergedResults = slurper.parseText('[]')
javaProjects.each {
def projectResultsFile = new File("${it.buildDir}/reports/jmh/results.json");
if (projectResultsFile.exists() && !projectResultsFile.text.isEmpty()) {
println "Merging JMH result file ${projectResultsFile}"
def results = slurper.parseText(projectResultsFile.text)
mergedResults += results
} else {
println "Project ${it.projectPath} has no JMH results. Skipping..."
}
}
mergedResultsFile.text = JsonOutput.prettyPrint(new JsonBuilder(mergedResults).toString())
println "Merged JMH result file can be found in ${mergedResultsFile}."
}
}
tasks.jmh.finalizedBy tasks.mergeJmhResults
jmhReport {
jmhResultPath = project.file("${mergedJmhResultsDir}/merged-jmh-results.json")
jmhReportOutput = project.file("${mergedJmhResultsDir}")
}
tasks.mergeJmhResults.finalizedBy tasks.jmhReport