2012-06-03 69 views
0

我有两种不同的算法,想知道哪一个在OpenGL ES中表现更好。如何衡量和比较两种不同实现的性能?

仪器中有这个Time Profiler工具,告诉我哪一行代码占用了整个处理时间的多少,但这总是相对于这个算法。

如何获得绝对值,以便我可以比较哪种算法性能更好?其实我只需占整个CPU占用的百分比。在Time Profiler中找不到它。消耗时间的百分比,但不是总体CPU工作负载。

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

+0

我不打扰任何一方。对于这两种算法,只需使用当前的刻度,即可运行工作并记录日志。与比较两个不同的分析器相比,Profiler更多地用于评估算法。 –

+0

均以60fps呈现。我应该在那里登录? –

+0

咦?测量两种算法之间差异的东西。如果两者的速度都是60 FPS,那么你会选择哪一个。最小的内存,CPU,线程?如果FPS是你想要的特征,并且它们都符合它,那么在其他需求浮出水面之前,你可能会过早地选择一个,以降低所使用的FPS。其他他们可能是一个更好的选择,或不,无论哪种方式,你会学到一些有用的东西。 –

回答

2

你在谈论,优化OpenGL ES的性能的情况下,是什么,时间Profiler是不适合来帮助你。 Time Profiler简单地测量各种函数和方法花费的CPU端时间,而不是渲染时GPU上实际加载的东西。此外,iOS GPU的延期性意味着绘图调用的处理实际上可能比您期望的要晚得多,导致某些功能看起来像瓶颈,当它们不是时。他们恰好恰好是早先调用排队的动作最终被执行的时候。

建议不要以每秒帧数为单位进行度量,而应报告从帧渲染开始到glFinish()-presentRenderbuffer:调用之后所需的时间(以毫秒为单位)。在进行性能分析时,您需要直接处理渲染所需的时间,因为更容易理解您对该数字的影响,而不是每秒帧数的倒数。另外,正如你发现的那样,iOS限制其显示帧速率为60 FPS,但你可以测量低于16.7 ms的渲染时间来分辨两种快速方法之间的差异。

除了基于时间的测量之外,请查看OpenGL ES Driver工具中的Tiler和Renderer Utilization统计信息,以查看您在GPU的顶点和片段处理部分上放置的负载。如果与渲染时应用程序的整体CPU负载相结合,这可以合理地表示一种方法与另一种方法的效率。

1

要解答您的上一个问题,Time Profiler仪器具有CPU策略,可让您单独查看每个CPU内核。仪器列表上方有三个小按钮,最初选择中央按钮。

enter image description here

点击左边的按钮显示CPU的策略。

enter image description here

相关问题