在 Eclipse 下运行 JMH 基准测试

2023-12-29

我正在尝试在 Eclipse 下开始使用 JMH。我可以构建一个 jar 来从命令行执行,但也希望能够直接在 Eclipse 中运行它,以便于开发。

目前我得到:

java.lang.RuntimeException: ERROR: Unable to find the resource: /META-INF/BenchmarkList

我正在使用来自的简单入门案例http://nitschinger.at/Using-JMH-for-Java-Microbenchmarking/ http://nitschinger.at/Using-JMH-for-Java-Microbenchmarking/:

public class MyBenchmark {

    @Benchmark
    public void testMethod() {
        // This is a demo/sample template for building your JMH benchmarks. Edit as needed.
        // Put your benchmark code here.
    }
    
    public static void main(String... args) throws Exception {
          Options opts = new OptionsBuilder()
              .include(".*")
              .warmupIterations(10)
              .measurementIterations(10)
//            .jvmArgs("-server")
              .forks(1)
//            .outputFormat(OutputFormatType.TextReport)
              .build();
          
          new Runner(opts).run();
        }    
}

我按照 JMH 文档中的指定生成了 POM,并按照中的指定添加了 exec-maven-pluginJMH 找不到资源:/META-INF/BenchmarkList https://stackoverflow.com/questions/38056899/jmh-unable-to-find-the-resource-meta-inf-benchmarklist:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.sample</groupId>
    <artifactId>test</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>

    <name>JMH benchmark sample: Java</name>

    <!-- This is the demo/sample template build script for building Java benchmarks 
        with JMH. Edit as needed. -->

    <prerequisites>
        <maven>3.0</maven>
    </prerequisites>

    <dependencies>
        <dependency>
            <groupId>org.openjdk.jmh</groupId>
            <artifactId>jmh-core</artifactId>
            <version>${jmh.version}</version>
        </dependency>
        <dependency>
            <groupId>org.openjdk.jmh</groupId>
            <artifactId>jmh-generator-annprocess</artifactId>
            <version>${jmh.version}</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <!-- JMH version to use with this project. -->
        <jmh.version>1.15</jmh.version>

        <!-- Java source/target to use for compilation. -->
        <javac.target>1.8</javac.target>

        <!-- Name of the benchmark Uber-JAR to generate. -->
        <uberjar.name>benchmarks</uberjar.name>
    </properties>

    <build>
        <plugins>
<!--            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <compilerVersion>${javac.target}</compilerVersion>
                    <source>${javac.target}</source>
                    <target>${javac.target}</target>
                </configuration>
            </plugin> -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>2.2</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <finalName>${uberjar.name}</finalName>
                            <transformers>
                                <transformer
                                    implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>org.openjdk.jmh.Main</mainClass>
                                </transformer>
                            </transformers>
                            <filters>
                                <filter>
                                    <!-- Shading signed JARs will fail without this. https://stackoverflow.com/questions/999489/invalid-signature-file-when-attempting-to-run-a-jar -->
                                    <artifact>*:*</artifact>
                                    <excludes>
                                        <exclude>META-INF/*.SF</exclude>
                                        <exclude>META-INF/*.DSA</exclude>
                                        <exclude>META-INF/*.RSA</exclude>
                                    </excludes>
                                </filter>
                            </filters>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.3</version>
                <configuration>
                    <compilerVersion>${javac.target}</compilerVersion>
                    <source>${javac.target}</source>
                    <target>${javac.target}</target>
                </configuration>
            </plugin>

<!--            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.4.0</version>
                <configuration>
                    <executable>java</executable>
                    <arguments>
                        <argument>-classpath</argument>
                        <classpath />
                        <argument>com.javapapers.java.benchmark.jmh.JMHHelloWorld</argument>
                    </arguments>
                </configuration>
            </plugin> -->

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>run-benchmarks</id>
                        <phase>integration-test</phase>
                        <goals>
                            <goal>exec</goal>
                        </goals>
                        <configuration>
                            <classpathScope>test</classpathScope>
                            <executable>java</executable>
                            <arguments>
                                <argument>-classpath</argument>
                                <classpath />
                                <argument>org.openjdk.jmh.Main</argument>
                                <argument>.*</argument>
                            </arguments>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

        </plugins>
        <pluginManagement>
            <plugins>
                <plugin>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>2.5</version>
                </plugin>
                <plugin>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.8.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.5.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>2.4</version>
                </plugin>
                <plugin>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>2.9.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>2.6</version>
                </plugin>
                <plugin>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>3.3</version>
                </plugin>
                <plugin>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>2.2.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.17</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>  
</project>

我使用 Eclipse 运行配置启动,如下所示:

我可以看到缺少的资源 /META-INF/BenchmarkList /is/ 在 jar 中,但 /not/ 在 /target 目录中。

可以在 Eclipse 下执行吗?


我一直在 Eclipse 中运行 JMH 测试(出于调试目的),但我在运行测试之前单独运行 Maven build,而测试作为 Java 应用程序执行:

第1步:构建Maven项目

  1. 右键单击项目,
  2. 选择运行方式,
  3. 选择 Maven Build 并将目标指定为clean install

(此步骤也可以通过运行相同的目标在命令行中完成)

第 2 步:运行测试

  1. 右键单击项目,
  2. 选择运行方式,
  3. 选择 Java 应用程序并选择Main - org.openjdk.jmh或您创建的主要
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Eclipse 下运行 JMH 基准测试 的相关文章

随机推荐

  • 从函数返回 JSX

    我有一个组件需要检查多个选项并根据这些选项返回 因此 我创建了一个外部函数 在我的组件返回语句中调用该函数来确定将返回的格式 render const policy this props let deployment policy Depl
  • 如何更改 silverlight 5 中只读文本框的背景颜色?

    我想更改只读文本框的颜色 可以将默认颜色更改为白色 颜色 和文本框为
  • 如何正确通知 MediaScanner 有关文件夹的信息,即使在 Nexus/Kitkat 设备上也是如此?

    背景 我正在制作一个应用程序 将一些图像从互联网下载到定义为的特定文件夹中 final String pathToPutFiles Environment getExternalStoragePublicDirectory Environm
  • 字符串不匹配时的 Ansible 条件

    我正在尝试编写一个 Ansible 剧本 仅在 Nginx 尚未存在且当前版本不存在时才编译 Nginx 然而它每次都会编译 这是不可取的 这就是我所拥有的 shell usr local nginx sbin nginx v 2 gt 1
  • mediaelement.js - 如何隐藏音频控件?

    我正在尝试将 Mediaelement js 实现到视频和音频网站中 视频运行良好 但我需要做的是隐藏音频元素 这样它根本不会显示在页面上 并且 MEJS 音频控件酒吧不可见 音频的播放将通过根据需要播放 暂停音频的函数来处理 我尝试更改
  • Spring Batch:动态块大小

    我有步骤读取多个资源 我需要根据每个文件的行数更改块大小 Spring Batch是否可以具有动态块大小 或者有其他方法可以做到这一点 你可以做Spring Batch 步骤分区 对步骤进行分区 以便该步骤具有多个线程 每个线程并行处理一块
  • TextInputLayout:未聚焦时提示标签的颜色不同

    我想做的事 当使用嵌入 TextInputLayout 中的 EditText 时 我想 当标签失焦并漂浮在 EditText 上方时 将标签的颜色设置为绿色 因为用户已经输入了一些值 当标签失焦并位于 EditText 内时 将标签的颜色
  • 如何在Scala中使用优先级队列?

    我正在尝试在 Scala 版本 2 10 中实现 A 搜索 但我遇到了障碍 我不知道如何使用 Scala 的优先级队列 我有一组正方形 表示为 Int Int s 我需要插入它们的优先级由Ints 在 Python 中 您只有一个键 值对列
  • Ruby on Rails 绘制 gem 图形? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • svn 非 LF 行结束问题 svn:ignore on dump load

    我正在尝试使用转储文件将运行 svn 版本 1 2 3 的系统上的存储库 历史记录完整 迁移到运行 1 7 1 的系统 由于原始存储库是一个早期版本 因此使用svnrdump直接不是一个选择 我用了svnadmin dump然后将 8 GB
  • 在 Google appengine 中禁用版本特定的网址

    Google App Engine 支持版本特定的请求路由 如文档所示 here https cloud google com appengine docs standard python how requests are routed例如
  • 如何使用 Python、Pandas 创建 Decile 和 Quintile 列以根据大小对另一个变量进行排名?

    我有一个数据框 其中一列包含Investment代表交易者投资的金额 我想在数据框中创建 2 个新列 一个给出十分位数排名 另一个给出五分位数排名Investment尺寸 我希望 1 代表投资额最大的十分位数 10 代表投资额最小的十分位数
  • 用于光线/网格相交的 DirectX 11 计算着色器

    我最近将使用 D3DXIntersect 查找光线 网格交点的 DirectX 9 应用程序转换为 DirectX 11 由于 D3DXIntersect 在 DX11 中不可用 我编写了自己的代码来查找交点 该代码仅循环网格中的所有三角形
  • 使用 Pyinstaller 2.0 、PySide 1.1.2 Bindings 和 Qt 4.8 时如何在应用程序中包含图标

    what script looks like 工作应用程序应该是什么样子 在发布之前 我查看了以下问题并尝试将其用作使我的脚本正常工作的指南 但它的用处不大 PyInstaller 不会将 PyQt 的图像加载到 GUI https sta
  • 在 x 轴上绘制日期

    我正在尝试根据日期绘制信息 我有一个格式为 01 02 1991 的日期列表 我通过执行以下操作来转换它们 x parser parse date strftime Y m d 这使19910102 然后我尝试使用 num2date imp
  • 在 PowerShell 2.0 中加载 .NET 4.0 beta2 程序集

    我尝试从加载PresentationFramework dll NET http en wikipedia org wiki NET FrameworkPowerShell v2 0 中的 4 0 beta2 但它失败并出现以下错误 PS
  • 如何围绕对角线旋转 CALayer?

    我正在尝试实现一个翻转动画 用于像 iPhone 应用程序这样的棋盘游戏 动画应该看起来像一个旋转并改变其背面颜色的游戏片段 有点像黑白棋棋子 http en wikipedia org wiki Reversi 我已经成功创建了一个围绕其
  • 在ant中无条件执行任务?

    我正在尝试定义一个任务 该任务在目标完成执行时发出 使用回显 消息 无论该目标是否成功 具体来说 目标执行一个任务来运行一些单元测试 我想发出一条消息 指示结果在哪里可用
  • PushOr 修改 mongodb 子文档的类似操作符

    我想做的是 如果子文档存在 则更新它 否则 仅通过一种方法推送新的子文档 首先 找到 name SweetTown 进而 If Bob存在 我想将其声誉更改为30 Town collection name SweetTown residen
  • 在 Eclipse 下运行 JMH 基准测试

    我正在尝试在 Eclipse 下开始使用 JMH 我可以构建一个 jar 来从命令行执行 但也希望能够直接在 Eclipse 中运行它 以便于开发 目前我得到 java lang RuntimeException ERROR Unable