Netbeans 分析器的“自我时间”实际上是啥意思?

Posted

技术标签:

【中文标题】Netbeans 分析器的“自我时间”实际上是啥意思?【英文标题】:What does Netbeans profiler's "Self Time" actually mean?Netbeans 分析器的“自我时间”实际上是什么意思? 【发布时间】:2012-07-20 14:48:32 【问题描述】:

我对我的简单游戏需要运行的时间感兴趣,因此我使用了 Netbeans Java 分析器 (Java 1.7),我可以在“热点”选项卡中看到“自我时间”和“调用”列。

比如我的渲染方法有:

自拍时间:1025 毫秒

调用:2311

所以,如果我理解得很好,这实际上是否意味着所有渲染方法调用的总时间总计为 1025 毫秒,而一个方法执行的平均时间为 1025 / 2311 = 0,44 ms?

如果是这样,我可以强制 IDE 显示平均时间而不是总时间吗?

【问题讨论】:

如果您的目标是减少总数,为什么要显示平均值? 好吧,如果我在一个方法中实现了一个游戏循环,我可能想看看一个执行(帧)需要多少时间...... 是的,你需要分割。但是,在检测模式下运行分析器(或者实际上,完全运行它)会影响​​性能(例如阻止 JIT 优化),并且不是非常有用。手动计时/基准测试(例如,调用 System.nanoTime)可能会更好,但也充满了问题。 【参考方案1】:

通常,“自我时间”衡量在方法体中花费的时间——不包括在它调用的方法中花费的时间。例如,假设您有一个简单的方法来检索已排序的用户,getUsers,它调用了两个自己不进行任何其他调用的方法。

UserList getUsers() 
    return sortUsers(loadUsers());

由于getUsers 不起作用,即使调用该方法很昂贵,它的自身时间也会非常低。

Method       Self Time  Call Time
-----------  ---------  ---------
getUsers          3 ms   1,184 ms
loadUsers       923 ms     923 ms
sortUsers       258 ms     258 ms

这是基于我使用过的其他配置文件——不是 NetBeans。希望有人可以为 NetBeans 本身确认或否认这一点。

【讨论】:

注意:内联的方法将计入父母的自用时间,不会被报告。除非探查器的存在导致 JIT 取消内联这些方法,否则您将看到整体性能下降。分析器对于了解核心、时间关键方法的性能不是很有用。微基准测试(即,不涉及探查器)更好,虽然正确地做起来很棘手。

以上是关于Netbeans 分析器的“自我时间”实际上是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

the hash for the file is not present in the specified catalog file,是啥意

在netbeans中附加调试器是啥意思? [复制]

jvisualvm是啥

Netbeans IDE 怎么设置背景图片?如果是代码是啥?

java+p+=+new+JPanel(new+GridLayout(5,3,0,15));啥意?

旧电脑的NetBeans项目不能在新电脑运行,是啥原因?MySQL安装在D盘