我正在尝试创建修改集合的基准.问题是我不知道如何为每次调用初始化数据.
假设Test.DATA是一个包含200个元素的集合.
该test方法根据a.isTrue()值来删除数据.
我知道这@Setup与JUnit类似@Setup.我想用,@Before
但我在JMH找不到一个.如何在test调用方法之前每次初始化数据?
非常感谢你提前.
@State(Scope.Thread)
public class JavaCollectionBenchmark {
List<Foo> cols;
@Setup
public void prepare(){
cols= new ArrayList<>(Test.DATA);
}
@Benchmark
public long test(){
if(cols.size() != 200) {
System.out.println("SECOND TIME DOESN'T WORK!");
System.exit(0);
}else{
System.out.println("FIRST TIME");
}
cols.removeIf(a-> a.isTrue());
return cols.size();
}
}
Run Code Online (Sandbox Code Playgroud)
检查注释上的Level参数@Setup.相当于@BeforeIS
@Setup(Level.Invocation)
Run Code Online (Sandbox Code Playgroud)
这说明,有许多的警告(合WARNING: HERE BE DRAGONS! THIS IS A SHARP TOOL.等)在这里
| 归档时间: |
|
| 查看次数: |
2052 次 |
| 最近记录: |