不幸的是,JMH无法提供在基准之间共享数据的方法。
一方面,当一个基准可以静默修改另一个基准的输入数据时,这打破了基准隔离,从而使比较不正确。这就是为什么你需要
@Setup在
@State每一个基准对象。
但是更重要的是,
static当JMH将在其自己的VM中执行每个测试时,在基准之间共享数据的任何技巧(例如,可从这两者访问的字段)都会中断默认的“分支”模式。值得注意的是,您建议的内容
staticfinal DataTestSet.PARSE_ME实际上将针对每个对象执行
@Benchmark,因为每个新的VM实例都必须进行初始化
TestSet;)当然,您可以禁用派生,但这会带来更多无法解决的问题。
因此,最好花一些时间使安装成本更可承受,这样才不会造成极大的痛苦。例如,从磁盘反序列化数据,而不是对其进行计算。或者,只是想出一种更快的计算方法。



