JMH 中这些奇怪的布尔值有什么用?

What are these weird booleans used for in JMH?

我写了 a JMH test 关于 new 指令的成本,并检查了它生成的 class 文件。除了通常的 classes,generated 文件夹中还有大量派生的 classes:

这真的让我震惊,因为仅仅几个注解就会导致这么多 class 通过继承绑定在一起。我很好奇那些 class 中有什么东西,所以我使用了一个名为 procyon 的反编译工具(顺便说一句,我从 KotlinConf 2019 的一次演讲中学到了这个工具)来反编译这些生成的 class,它们中的大多数与控制相关,例如测量时间(它们被明确指定不能内联)和收集指标。但是那些 class:

中有很多奇怪的布尔值

其他生成的 class 文件中也有很多布尔值。我用谷歌搜索了一下,似乎它们有点源自 JMH sourse code。所以我想问一下这些布尔值是做什么用的?我假设它们与 JMH 的工作原理密切相关......似乎没有关于 JMH 源代码中的布尔值的评论。

此外,关于改进我从一开始就提到的 JMH 测试的任何建议...?我知道测试这样的东西可能非常棘手和脆弱,所以我不知道它们是否准确或足够可靠。

非常感谢。

只是猜测。

如您所见,布尔值是私有的,在源文件中未被使用。它们可能会通过反射在某处使用,但我敢打赌它们不会。所以唯一剩下的就是确保 markerBegin 和另一个字段属于不同的缓存,以防止 false sharing.