当前位置: 首页 > 知识库问答 >
问题:

如何将JMH与渐变一起使用?

史景铄
2023-03-14

我想在gradle中使用JMH,一个OpenJDK微基准工具。然而,我得到了关于编译的NPE。另一方面,JMH在使用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)

共有3个答案

穆铭晨
2023-03-14

不好意思,我试图对一个有参数的方法进行基准测试——当然JMH不知道要传递什么:)有一次,当我创建了一个没有参数的void方法时,一切都正常工作了。

我的构建:分级

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。

高建本
2023-03-14

目前您可以只使用专用插件jmh-gradle-plugin

它需要最少的配置,并允许您运行JMH基准以及构建基准工件

朱英范
2023-03-14

刚刚完成我的“杰作”。没有超级罐子,没有插件,代码基础从主分离

我直接从IntelliJ运行它,要在一个盒子上运行,您可能需要返回uber jar:-)

在这样做之前,我已经花了相当多的时间试图让插件工作,但它对我的口味来说太笨拙了。

下面是逐步分解。

定义一个名为jmh的新源集,其类路径与主源集的类路径挂钩

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

定义 JavaExec 类型的任务 jmh

task jmh(type: JavaExec, dependsOn: jmhClasses) {
    main = 'org.openjdk.jmh.Main'
    classpath = sourceSets.jmh.compileClasspath + sourceSets.jmh.runtimeClasspath
}

挂钩jmhClass任务在之后运行,以确保基准测试与其余代码一起编译

classes.finalizedBy(jmhClasses)
 类似资料:
  • 问题内容: 指定带有透明度的渐变颜色时,是否可以使用CSS变量,例如 问题答案: 您可以使用变量,但不能从CSS中的单个十六进制值中采样各个红色,绿色和蓝色分量。 如果您只是想将alpha分量应用于现有的RGB三元组,则可以将整个三元组指定为用逗号分隔的十进制值列表,而不是十六进制值,并将其作为单个不透明标记直接替换为函数: 如果要使用来指定和控制各个R,G和B值,则需要为每个颜色分量指定一个变量

  • Redux framework正在使用reducers来更改应用程序状态以响应操作。 关键要求是缩减器不能修改现有的状态对象;它必须产生一个新的对象。 错误示例: 好例子: 这是一个很好的Immutable.js.用例

  • 我在Ubuntu 14.04中安装了phpbrew以使用PHP5.4。它工作得很好,但当我尝试使用composer时除外,composer会忽略phpbrew并安装与PHP5.5相关的依赖项。 有没有办法强制composer与phpbrew config兼容?我试图在我的作曲家中添加:php:“5.4”。json,但是它说这个要求在我的php版本中是不可能的。

  • 我是Micronaut框架的新手,我正在尝试使用entitymanager创建我的存储库。我这样创建了我的存储库 我使用这个类实现接口并注入entitymanager 问题是我一直有这个错误: PS:我已经启用了注释处理

  • 我正在尝试将composer与我的WampServer一起使用。 我所有文件的路径都是,但当我运行composer时,它会将供应商文件和其他东西安装到其他地方。 我甚至不知道我的项目在哪里,我也不能改变我的项目在哪里的路径。我已经尝试了所有的方法,但它似乎仍然没有在我的项目文件夹中安装供应商文件。

  • API level 28和Google建议使用registerNetworkCallback(NetworkRequest,PendingIntent)不推荐CONNECTIVITY\u操作。 我尝试使用ConnectionManager注册了registerNetworkCallback。NetworkCallback和它的工作,但我想使用PendingContent。 让我困惑的是公共空寄存器