You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java(Maven)项目中基准测试代码的存放位置及保留规范咨询

Maven基准测试代码的留存与存放方案

要不要保留基准测试代码?

必须留。基准测试代码是跟踪代码性能变化、验证优化效果的核心依据——后续迭代时,你可以快速复用这些代码验证新改动的性能影响,避免重复造轮子;团队协作时,也能让其他人直观看到某段代码的性能基线,防止无意识的性能退化。

Maven中基准测试的存放约定

Maven官方没有强制的专属benchmark目录,但行业有几种主流的落地方案:

方案1:复用现有test目录,通过子包区分

直接把基准测试代码放在src/test/java下的独立子包(比如com.yourproject.benchmark),这种方式不用额外配置Maven,完全兼容现有构建流程。

  • 注意点:要和普通单元测试做区分,比如用JMH的@Benchmark注解标记,或者通过Maven Profile配置,只在需要时单独执行基准测试(避免跑单元测试时顺带执行耗时的基准测试)。

方案2:自定义基准测试源码目录

如果想和普通测试代码完全隔离,可以在项目根目录新增src/benchmark/java和src/benchmark/resources目录,然后在pom.xml中配置Maven的构建规则,示例配置如下:

<build>
    <plugins>
        <!-- 配置JMH插件编译基准测试代码 -->
        <plugin>
            <groupId>org.openjdk.jmh</groupId>
            <artifactId>jmh-maven-plugin</artifactId>
            <version>1.37</version>
            <executions>
                <execution>
                    <goals>
                        <goal>compile</goal>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <!-- 把自定义目录加入源码路径 -->
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>3.3.0</version>
            <executions>
                <execution>
                    <id>add-benchmark-source</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>add-source</goal>
                    </goals>
                    <configuration>
                        <sources>
                            <source>src/benchmark/java</source>
                        </sources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

方案3:独立成Maven模块

如果基准测试依赖特殊环境、或者需要单独打包分发,可以把它做成项目的一个独立模块(比如your-project-benchmark),模块内可以复用上述任意一种存放方式,这种方案的隔离性最好,适合大型项目。

额外实用建议

  • 优先用JMH这类成熟的基准测试框架,避免自己实现的测试逻辑有性能偏差;
  • 给每个基准测试用例添加清晰的注释,说明测试场景、预期性能指标;
  • 配置Maven Profile,比如新增benchmark profile,只有执行mvn clean install -P benchmark时才会运行基准测试,不影响日常构建效率。

内容的提问来源于stack exchange,提问作者Teddy Tsai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 14:30:03