【问题标题】:Instruments profiling: "top functions" reorders functions仪器分析:“顶级功能”重新排序功能
【发布时间】:2012-09-08 17:22:22
【问题描述】:

我通过更改 OpenGL 代码优化了函数 Render()。然后我运行 Instruments / Time Profile,时间限制为 180 秒(因此测量准确)。

  1. 打开反转调用树
    • 680 毫秒(未优化),
    • 500 毫秒 进行优化。
  2. 关闭反转调用树
    • 277 毫秒(未优化),
    • 345 毫秒 进行优化。
  3. 打开Top Functions(仍然关闭Invert Call Tree):
    • 4591 毫秒(未优化),
    • 5277 毫秒进行优化。
  4. 打开Invert Call Tree(仍然打开Top Functions):
    • 没有变化 (4591),
    • 没有变化 (5277)。

如何解释这个?优化后的版本更快还是更慢?

【问题讨论】:

    标签: profiling instruments


    【解决方案1】:

    Time Profiler 结果取决于您运行的 Xcode 版本。如果您正在运行 Xcode 4.4 或更高版本,则 Time Profiler 仪器在调用树中的每个符号都有两列:运行时间和自身。 Self 列更重要,因为它告诉您函数位于调用堆栈顶部的时间量。所有运行时间列都告诉您函数在调用堆栈上的时间,这实际上并不意味着在堆栈顶部。

    要查看您的应用在 Render() 中花费了多少时间,请取消选中 Invert Call Tree 复选框并查看 Render() 的 Self 列。如果这是您正在分析的游戏,那么可以在调用树中双击您的游戏循环函数。双击游戏循环函数会打开源视图,它会告诉您游戏循环在 Render() 函数中花费的时间百分比。

    Time Profiler 工具并不是分析 OpenGL 代码的最佳工具。如果您正在编写 Mac 应用程序,则 OpenGL Profiler 工具比 Instruments 更好地分析 OpenGL 代码。 Instruments 还有一个用于测量 OpenGL 统计数据的 OpenGL Driver 工具。如果您正在分析 iOS 应用,请使用 OpenGL ES Analysis Instruments 模板和 OpenGL ES Performance Detective 工具。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-07
      相关资源
      最近更新 更多