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
This commit is contained in:
49
gradle/snowball-benchmarks.gradle
Normal file
49
gradle/snowball-benchmarks.gradle
Normal file
@@ -0,0 +1,49 @@
|
||||
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'))
|
||||
}
|
||||
Reference in New Issue
Block a user