Java实现基准测试框架

本文介绍了基于Java Microbenchmark Harness(JMH)框架实现的基准测试项目,该项目用于测试系统在特定负载下的响应时间和稳定性。实现了通过Case接口标注待测试类,Benchmark注解标注测试方法,Measurement注解配置测试,WarmUp注解设定预热次数,以及自动发现待测试类的机制。文章中展示了如何使用这些注解进行测试,并给出了String与StringBuffer相加以及归并、快速排序的时间复杂度比较。
摘要由CSDN通过智能技术生成

首先呢,要提一下的是JMH(Java Microbenchmark Harness)的基准测试框架,JMH用于各种类型的microbenchmark——每个测试从纳秒到毫秒。它关注所有可测量的逻辑,测试人员只需编写测试方法的任务代码。

我的这个项目呢,是参照JMH这个框架,用于测试系统在特定负载的情况下,相应时间和稳定性的表现情况

实现的功能:

  1. 通过 Case 接口来标注待测试类
  2. 通过 Benchmark 注解来标注待测试方法
  3. 通过 Measurement 注解来指定测试配置
  4. 通过WarmUp注解来指定预热次数(默认为0)
  5. 通过简单的类加载机制,实现可以待测试类的自动发现

项目进行时:

1.通过@Measurement来实现配置

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE,ElementType.METHOD})
public @interface Measurement {
    //一组实验调用多少次方法
    int iterations();
    //一共进行多少组使用
    int group();
}

2.通过 Benchmark 注解来标注一下那些是要测试的方法

因此实际上这个注解的内容为空

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Benchmark {

}

3.通过 Case 接口来标注待测试类

public interface Case {
}

4.通过WarmUp这个注解来标注预热的次数

public @interface WarmUp {
    //预热次数默认为0次
    int iterations() default 0;
}

5.待测试类的加载

  1. 根据一个固定的类,找到类的加载器
  2. 根据类加载器找的类文件的路径
  3. 扫描该路径下的所有类文件
  4. 利用Case这个接口,找到待测试的类
class CaseRunner{
    //默认的配置参数
    private static final int DEFAULT_ITERATIONS =
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值