build: isolate Snowball benchmark integration into dedicated Gradle script docs: highlight benchmarked throughput advantage in README docs: add detailed benchmarking guide and execution notes
49 lines
1.6 KiB
Groovy
49 lines
1.6 KiB
Groovy
def snowballVersion = '3.0.1'
|
|
def snowballArchiveName = "libstemmer_java-${snowballVersion}.tar.gz"
|
|
def snowballDownloadUrl = "https://snowballstem.org/dist/${snowballArchiveName}"
|
|
def snowballDownloadFile = layout.buildDirectory.file("third-party/snowball/${snowballArchiveName}")
|
|
def snowballExtractDirectory = layout.buildDirectory.dir('third-party/snowball/source')
|
|
def snowballJavaSourceDirectory = layout.buildDirectory.dir(
|
|
"third-party/snowball/source/libstemmer_java-${snowballVersion}/java")
|
|
|
|
tasks.register('downloadSnowballJava') {
|
|
group = 'build setup'
|
|
description = 'Downloads the official Snowball Java source distribution for benchmark-only use.'
|
|
|
|
outputs.file(snowballDownloadFile)
|
|
|
|
doLast {
|
|
File targetFile = snowballDownloadFile.get().asFile
|
|
targetFile.parentFile.mkdirs()
|
|
|
|
if (!targetFile.exists()) {
|
|
new URL(snowballDownloadUrl).withInputStream { inputStream ->
|
|
targetFile.withOutputStream { outputStream ->
|
|
outputStream << inputStream
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
tasks.register('extractSnowballJava', Copy) {
|
|
group = 'build setup'
|
|
description = 'Extracts the official Snowball Java source distribution.'
|
|
|
|
dependsOn(tasks.named('downloadSnowballJava'))
|
|
|
|
from(tarTree(resources.gzip(snowballDownloadFile)))
|
|
into(snowballExtractDirectory)
|
|
}
|
|
|
|
sourceSets {
|
|
jmh {
|
|
java {
|
|
srcDir(snowballJavaSourceDirectory)
|
|
}
|
|
}
|
|
}
|
|
|
|
tasks.named('compileJmhJava') {
|
|
dependsOn(tasks.named('extractSnowballJava'))
|
|
} |