如何衡量和比较两种不同实现的性能?

时间:2012-06-03 15:44:43

标签: ios xcode performance xcode4 instruments

我有两种不同的算法,想知道哪一种在OpenGL ES中表现更好。

在Instruments中有这个Time Profiler工具可以告诉我占用整个处理时间的代码行占了多少%,但这总是与该算法有关。

如何获得绝对值,以便比较哪种算法表现更好?实际上我只需要一定比例的CPU占用率。在Time Profiler中找不到它。消耗时间的百分比,而不是整体CPU工作负载。

还有一个WWDC节目谈论了一些漂亮的CPU跟踪器,它分别显示了每个核心。我需要哪种性能仪器以及我必须在哪些值上进行比较?

2 个答案:

答案 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内核。仪器列表上方是三个小按钮,其中最初选择中心按钮。

enter image description here

单击左键显示CPU策略。

enter image description here