在 JMH 中对具有不同值的循环进行微基准测试
Micro benchmarking a loop with different values in JMH
众所周知,在 JMH 基准测试中使用循环不是一个好主意,因为它会被 JIT 编译器优化,因此应该避免。有没有一种方法可以在不使用循环的情况下为我的 JMH 基准方法提供 int
输入(输入列表)的不同值。
看看this example in the JMH documentation。您可以在字段上使用 @Param
注释来告诉 JMH 注入此注释的值:
@Param({"1", "2"})
public int arg;
@Benchmark
public int doBenchmark() {
return doSomethingWith(arg);
}
对于值 1
和 2
,基准都是 运行。
请注意,如果带注释的字段不是 String
而是原始值,则值在分配之前会被解析并以其转换后的形式分配。如果您有多个带有 @Param
注释的字段,JMH 将 运行 基准与字段值的任何可能排列。
您还可以在定义 JMH 运行ner 时覆盖值分配。
众所周知,在 JMH 基准测试中使用循环不是一个好主意,因为它会被 JIT 编译器优化,因此应该避免。有没有一种方法可以在不使用循环的情况下为我的 JMH 基准方法提供 int
输入(输入列表)的不同值。
看看this example in the JMH documentation。您可以在字段上使用 @Param
注释来告诉 JMH 注入此注释的值:
@Param({"1", "2"})
public int arg;
@Benchmark
public int doBenchmark() {
return doSomethingWith(arg);
}
对于值 1
和 2
,基准都是 运行。
请注意,如果带注释的字段不是 String
而是原始值,则值在分配之前会被解析并以其转换后的形式分配。如果您有多个带有 @Param
注释的字段,JMH 将 运行 基准与字段值的任何可能排列。
您还可以在定义 JMH 运行ner 时覆盖值分配。