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性能分析

Download history 194/week @ 2023-11-29 222/week @ 2023-12-06 171/week @ 2023-12-13 143/week @ 2023-12-20 90/week @ 2023-12-27 148/week @ 2024-01-03 179/week @ 2024-01-10 342/week @ 2024-01-17 537/week @ 2024-01-24 464/week @ 2024-01-31 292/week @ 2024-02-07 220/week @ 2024-02-14 279/week @ 2024-02-21 294/week @ 2024-02-28 256/week @ 2024-03-06 164/week @ 2024-03-13

1,031 每月下载量
3 个crate(2个直接使用) 中使用

BSL-1.0 许可证

14KB
200

hprof,一个实时分层分析器

Travis Crates.io

文档

hprof 适用于获取“系统”的大致测量值,而不是精细的分析数据。考虑使用 perfSystemTapDTraceVTune 等工具进行更详细的分析。

什么是分层分析?

分层分析基于观察,游戏通常被组织成一个“树”的行为。你有一个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