如何在IntelliJ Profiler中正确使用wall clock time进行性能分析?
正确配置IntelliJ Async Profiler使用Wall Clock Time的方法
要让IntelliJ的Async Profiler正确统计Wall Clock时间(包含线程休眠、等待等非CPU耗时),按以下步骤操作:
1. 配置Profiler事件类型
- 打开
Run > Edit Configurations,找到你的应用运行配置 - 切换到Profiler标签页,在Async Profiler区域找到Event type选项
- 从下拉菜单中选择Wall clock time;如果没有该选项,直接在自定义事件输入框中填写
wall - 调整采样频率(默认10ms即可,无需过高设置)
2. 启动Profiler的正确方式
- 必须点击工具栏上的Profile按钮(带火焰图标的按钮)启动应用,而不是普通的
Run按钮,确保Profiler正确附加到进程
为什么之前的配置可能不生效?
- 误选了CPU time作为事件类型,导致仅统计CPU占用时间,忽略了
Thread.sleep这类非CPU耗时 - 用普通
Run启动应用,Profiler并未实际启动,自然不会生成Wall Clock维度的采样数据 - 部分旧版本IntelliJ的Async Profiler内置版本可能存在兼容性问题,建议升级到较新的IntelliJ版本
预期结果验证
针对你的测试代码,正确配置后:
- 火焰图中
f1和f2的时间占比会接近(两者均运行约10秒) f1的火焰栈会显示Math.pow等CPU密集型调用,f2的栈会明确显示Thread.sleep的调用链路
内容的提问来源于stack exchange,提问作者zjffdu
相关产品推荐
相关产品推荐

