我正在尝试在JMH
中编写基准来衡量我们自定义集合的效果。
我指的是将对象放入其中的表现。事情是每次迭代我想生成一个要放置的对象,但我想从基准结果本身中排除生成。
以下是它的样子:
@Benchmark
public void m(){
Collection<Object> c = create();
Object o = createObject();
// I want to measure performance of the following line only
c.add(o);
}
public Collection<Object> create(){
//return the instance of the collection
}
public Object createObject(){
//return some object
}
我知道@Setup
注释,但只有在启动基准测试时才会调用它。所以它不完全是我想要的。
答案 0 :(得分:1)
您可以在设置方法中创建这些对象,例如将它们存储在预先构建的数组中。
然后提供新对象归结为数组访问和索引增加操作。我很确定你不会找到一种方法来减少努力。
换句话说:如果您不想对对象创建进行基准测试,那么唯一的另一种方法是创建它们 upfront 并以某种方式记住它们供以后使用。如果@Setup不是你想要的;只需使用一些静态数组,当你的类加载时它就会被填充。