我有两种不同的算法,想知道哪一种在OpenGL ES中表现更好。
在Instruments中有这个Time Profiler工具可以告诉我占用整个处理时间的代码行占了多少%,但这总是与该算法有关。
如何获得绝对值,以便比较哪种算法表现更好?实际上我只需要一定比例的CPU占用率。在Time Profiler中找不到它。消耗时间的百分比,而不是整体CPU工作负载。
还有一个WWDC节目谈论了一些漂亮的CPU跟踪器,它分别显示了每个核心。我需要哪种性能仪器以及我必须在哪些值上进行比较?
答案 0 :(得分:2)
您正在谈论的情况,优化OpenGL ES性能,Time Profiler不适合帮助您。 Time Profiler只测量在各种函数和方法中花费的CPU时间,而不是渲染时GPU上的实际负载。此外,iOS GPU的延迟特性意味着绘制调用的处理实际上可能比您预期的要晚得多,导致某些功能看起来不像瓶颈。它们恰好是最终执行前一次调用排队的操作。
作为建议,请勿以每秒帧数进行衡量,而是报告从帧渲染开始到glFinish()
或-presentRenderbuffer:
呼叫之后所用的时间(以毫秒为单位)。在进行性能分析时,您希望直接使用渲染所需的时间,因为更容易理解您对该数字的影响,而不是每秒的反向帧数。此外,正如您所发现的,iOS将其显示帧速率限制在60 FPS,但您可以测量远低于16.7 ms的渲染时间,以区分两种快速方法之间的区别。
除了基于时间的测量之外,请查看OpenGL ES Driver工具中的Tiler和Renderer Utilization统计信息,以查看您放置在GPU的顶点和片段处理部分上的负载。在渲染时与应用程序的整体CPU负载结合使用时,可以合理地表示一种方法与另一种方法的效率。
答案 1 :(得分:1)
为了回答您的上一个问题,Time Profiler仪器具有CPU策略,可让您分别查看每个CPU内核。仪器列表上方是三个小按钮,其中最初选择中心按钮。
单击左键显示CPU策略。