Files
Radixor/gradle/snowball-benchmarks.gradle
Leo Galambos 6b3559097a feat: add JMH comparison benchmarks for Radixor vs Snowball Porter stemmers
build: isolate Snowball benchmark integration into dedicated Gradle script
docs: highlight benchmarked throughput advantage in README
docs: add detailed benchmarking guide and execution notes
2026-04-14 18:25:41 +02:00

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'))
}