3

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

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

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

4

1 回答 1

7

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 工具。

于 2012-09-17T02:12:03.750 回答