0

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

Instruments 中有这个 Time Profiler 工具,它告诉我哪一行代码消耗了总处理时间的百分比,但这总是与这个算法有关。

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

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

4

2 回答 2

2

您所说的优化 OpenGL ES 性能的情况是 Time Profiler 不太适合帮助您解决的问题。Time Profiler 只是测量在各种函数和方法上花费的 CPU 端时间,而不是渲染时在 GPU 上的实际负载。此外,iOS GPU 的延迟特性意味着绘图调用的处理实际上可能比您预期的要晚得多,导致某些功能看起来像瓶颈,而实际上并非如此。它们恰好发生在由早期调用排队的操作最终执行时。

作为建议,不要以每秒帧数为单位,而是以毫秒为单位报告从帧渲染开始到 a glFinish()or-presentRenderbuffer:调用之后所花费的时间。当您进行分析时,您希望直接处理渲染所需的时间,因为更容易理解您对这个数字的影响,而不是它的倒数,每秒帧数。此外,正如您所发现的,iOS 将其显示帧速率限制在 60 FPS,但您可以测量远低于 16.7 毫秒的渲染时间,以区分两种快速方法之间的差异。

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

于 2012-06-04T19:10:30.443 回答
1

为了回答您的最后一个问题,Time Profiler 仪器具有 CPU 策略,可让您分别查看每个 CPU 内核。仪器列表上方是三个小按钮,最初选择中间的按钮。

在此处输入图像描述

单击左侧按钮以显示 CPU 策略。

在此处输入图像描述

于 2012-06-04T18:30:46.060 回答