java - 这些奇怪的布尔值在 JMH 中是用来做什么的?
问题描述
我写了一个关于指令成本的JMH 测试new
,并检查了它生成的类文件。generated
除了通常的类,文件夹中有大量的派生类:
这真的让我很震惊,因为很少的注释就会导致这么多的类通过继承绑定在一起。我很好奇这些类中有什么东西,所以我使用了一个反编译工具(顺便说一句,我从 KotlinConf 2019 上的一次演讲中学到了这个工具)procyon
来反编译这些生成的类,其中大部分是与控制相关的,比如测量时间(它们是明确指定不能内联)并收集指标。但是这些类中有很多奇怪的布尔值:
其他生成的类文件中也有许多布尔值。我用谷歌搜索了这个,似乎它们在某种程度上来自JMH 源代码。所以我想问一下这些布尔值是做什么用的?我将假设它们与 JMH 的工作原理密切相关......似乎没有关于 JMH 源代码中的布尔值的评论。
另外,关于改进我从一开始提到的 JMH 测试的任何建议......?我知道测试这样的东西可能非常棘手和脆弱,所以我不知道它们是否准确或足够可靠。
非常感谢。
解决方案
只是猜测。
如您所见,布尔值是私有的并且在源文件中未使用。它们可能会通过反射在某处使用,但我敢打赌它们不是。所以剩下的唯一事情就是确保markerBegin
和其他字段属于不同的缓存,以防止虚假共享。
推荐阅读
- performance - ARM softfp 与 hardfp 性能对比
- node.js - 重设密码。令牌在 MEAN Stack 中每次都过期
- ios - 使用 scaleAspectFit 时 UIImageView 中的空白空间
- vba - 我可以使用带有 VBA 的 goole 日历 API(从 MS-Excel 创建日历条目)
- r - 重新加载由 R 包生成的图
- c# - 后台工作人员遇到未处理的异常时可以自行退出,但服务继续运行吗?
- python - Gunicorn 因 OSError 失败:[Errno 107] 传输端点未连接
- haskell - Haskell 缺少括号编译但进入无限循环
- azure - 从 json 请求正文中获取值并存储在 Azure API 管理中的变量中
- java - 如何将 IntellijIDEA 2019“运行”视图/工具窗口控制台输出恢复为较旧的经典布局