有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java微基准测试JMH中具有不同值的循环

众所周知,在JMH基准测试中使用循环不是一个好主意,因为它将由JIT编译器优化,因此应该避免。有没有一种方法可以在不使用循环的情况下为我的JMH基准测试方法提供不同的int输入值(输入列表)


共 (1) 个答案

  1. # 1 楼答案

    看看this example in the JMH documentation。可以在字段上使用@Param注释,以便告诉JMH注入此注释的值:

    @Param({"1", "2"})
    public int arg;
    
    @Benchmark
    public int doBenchmark() {
      return doSomethingWith(arg);
    }
    

    然后对值12运行基准测试

    请注意,如果带注释的字段不是String,而是原语,那么这些值在赋值之前会被解析,并以转换后的形式赋值。如果有多个字段带有@Param注释,JMH将使用字段值的任何可能排列来运行基准测试

    在定义JMH运行程序时,还可以重写值分配