我想使用JMH ( OpenJDK微基准测试工具)和gradle。然而,我在编译上得到了NPE。另一方面,JMH在使用from maven时起作用。
我不会发布任何build.gradle,因为它是基本的-应用java插件并添加对JHM工具(org.openjdk.jmh:jmh-core:0.2)的依赖。
我试过写这里的东西,但没有成功。
我还能做什么?我想找个经纪人做点什么,但我还是想不出来。
例外:
:compileJava
java.lang.NullPointerException
at org.openjdk.jmh.processor.internal.GenerateMicroBenchmarkProcessor.validMethodSignature(GenerateMicroBenchmarkProcessor.java:502)发布于 2018-12-21 18:41:38
刚完成我的"名著“。没有uber-jar,没有插件,与main & test分离的代码库,连接到main的基准编译,但是在主流生命周期中不会自动运行。简单,明确,和可攻击,香草级。
我直接从IntelliJ运行它,要在一个盒子上运行,您可能需要返回uber-jar :-)
在此之前,我花了相当多的时间来尝试做那个插件,但是它太笨重了,不适合我的口味。
下面一步一步地分解。
sourceSet 定义了一个名为 jmh 的新的类路径,该路径与主 sourceSet的类路径挂钩。
sourceSets {
jmh {
java.srcDirs = ['src/jmh/java']
scala.srcDirs = ['src/jmh/scala']
resources.srcDirs = ['src/jmh/resources']
compileClasspath += sourceSets.main.runtimeClasspath
}
}为它定义依赖项(至少JMH及其注释处理器).
dependencies {
...
jmhImplementation 'org.openjdk.jmh:jmh-core:1.35'
jmhImplementation 'org.openjdk.jmh:jmh-generator-annprocess:1.35'
}定义类型为jmh JavaExec的任务
task jmh(type: JavaExec, dependsOn: jmhClasses) {
main = 'org.openjdk.jmh.Main'
classpath = sourceSets.jmh.compileClasspath + sourceSets.jmh.runtimeClasspath
}在jmhClasses classes 之后运行Hook 任务,以确保基准测试与代码的其余部分一起编译
classes.finalizedBy(jmhClasses)发布于 2014-07-16 23:26:26
目前,您可以只使用专用插件插件。
它需要最少的配置,允许您运行JMH基准测试以及构建基准测试工件。
发布于 2013-12-07 17:54:46
我的缺点是,我试图对一个有争议的方法进行基准测试--当然JMH将不知道该传递什么:)有一次,当我创建一个没有参数的void方法时,所有东西都正常工作。
我的build.gradle
defaultTasks 'build'
apply plugin: 'java'
apply plugin: 'shadow'
buildscript {
repositories {
mavenCentral()
maven {
name 'Shadow'
url 'http://dl.bintray.com/content/johnrengelman/gradle-plugins'
}
}
dependencies {
classpath 'org.gradle.plugins:shadow:0.7.4'
}
}
jar {
manifest {
attributes 'Main-Class': 'org.openjdk.jmh.Main'
}
}
repositories {
mavenCentral()
}
build.doLast {
tasks.shadow.execute()
}
shadow {
outputFile = new File('build/libs/microbenchmarks.jar')
}
ext {
lib = [
... other dependencies...
jmh: 'org.openjdk.jmh:jmh-core:0.2'
]
}
dependencies {
compile lib... other dependencies...
compile lib.jmh
}
sourceCompatibility = 1.7构建测试和jar:
gw clean build然后用:
java -jar build/libs/microbenchmarks.jar ".*" -wi 2 -i 10 -f 2 -t 16更新
从最新版本的JMH中,还需要将依赖项添加到:
org.openjdk.jmh:jmh-generator-annprocess:0.5.4你可以使用阴影0.8。
https://stackoverflow.com/questions/20443997
复制相似问题