4 个版本
使用旧的Rust 2015
0.1.3 | 2015年12月28日 |
---|---|
0.1.2 | 2015年5月4日 |
0.1.1 | 2015年5月3日 |
0.1.0 | 2015年5月3日 |
#230 在 性能分析
1,031 每月下载量
在 3 个crate(2个直接使用) 中使用
14KB
200 行
hprof
,一个实时分层分析器
hprof
适用于获取“系统”的大致测量值,而不是精细的分析数据。考虑使用 perf
、SystemTap
、DTrace
、VTune
等工具进行更详细的分析。
什么是分层分析?
分层分析基于观察,游戏通常被组织成一个“树”的行为。你有一个AI系统,它进行路径规划、做出战术决策等。你有一个物理系统,它进行碰撞检测、刚体动力学等。一个树可能看起来像
- 物理
- 碰撞检测
- 宽相
- 窄相
- 流体模拟
- 刚体模拟
- 碰撞解决
- 更新位置
- 碰撞检测
- AI
- 路径规划
- 战斗策略
- 建筑队列维护
- 渲染
- 视锥剔除
- 绘制调用排序
- 绘制调用提交
- GPU等待
分层分析器将根据每个步骤花费的时间对这棵树进行注释。这是基于计时器的分析的扩展,其中使用计时器来测量代码块执行所需的时间。你不需要编写一次性计时器,只需调用 Profiler::enter("某物描述")
即可,新条目将被添加到分析树中。
这个想法来自2002年Game Programming Gems 3杂志上的一篇文章,由Westwood Studios的Greg Hjelstrom和Byon Garrabrant撰写的“Real-Time Hierarchical Profiling”。他们报告说,一次可以有数千个分析节点处于活动状态。
许可证
本软件根据Boost软件许可证许可。简而言之,您可以自由使用、修改和以任何形式重新分发,无需署名。
示例输出
Timing information for main loop:
setup - 1133523ns (6.725068%)
physics - 2258292ns (13.3982%)
collision - 1140731ns (50.512998%)
update positions - 1108782ns (49.098257%)
render - 13446767ns (79.778204%)
cull - 1134725ns (8.438646%)
gpu submit - 2197346ns (16.341073%)
gpu wait - 10088879ns (75.028287%)
依赖项
~165KB