理解iphoneopengl评测

理解iphoneopengl评测,iphone,opengl-es,instruments,Iphone,Opengl Es,Instruments,我的应用程序已启动并正在运行,现在我希望提高渲染性能。我用“仪器”收集了一些数据。我用的是一部旧的iphone3g手机,这是最糟糕的情况 时间分析器: -30% CopyVertexElementsMultipleSequential -11% mach_msg_trap -4% _semwait_signal -2% ValidateState 但是,使用Open GL ES驱动程序,采样器显示: -70% _semwait_signal -24% C

我的应用程序已启动并正在运行,现在我希望提高渲染性能。我用“仪器”收集了一些数据。我用的是一部旧的iphone3g手机,这是最糟糕的情况

时间分析器:

-30%    CopyVertexElementsMultipleSequential
-11%    mach_msg_trap
-4%     _semwait_signal
-2%     ValidateState
但是,使用Open GL ES驱动程序,采样器显示:

-70%    _semwait_signal
-24%    CopyVertexElementsMultipleSequential
-0.7%   mach_msg_trap

翻看这些文档,我还没有弄清楚OpenGL ES采样器和计时器分析器之间的区别。有人能告诉我吗?

首先,这就是你正在看的取样器。OpenGL ES驱动程序模板仅包括采样器工具和OpenGL ES驱动程序工具。它与OpenGL ES没有任何特殊关系

取样器仪器和时间剖面仪收集数据的方式不同。从:

时间剖面仪及其应用 取样器仪器与之类似,但 有一些区别:

  • 时间分析器以与Shark相同的方式收集回溯数据,从 内核空间。取样器,另一方面 另一方面,从用户空间收集数据。 因此,时间剖面仪更为重要 在采集时比取样器效率高 数据

  • 注意:如果 优化目标进程以省略 帧指针

  • 时间分析器可以从一个或所有进程收集数据。取样器只能 对单个过程进行采样

  • 时间分析器只能对所有线程状态或正在运行的线程进行采样。 取样器总是对所有线程进行采样 国家。一般来说,你是感兴趣的 在运行线程中。当你的 应用程序已挂起,您想 检查所有线程状态

我更喜欢自己使用时间分析器,使用适当的数据挖掘,比如向调用方收费库或方法

关于分析OpenGL ES应用程序,您需要首先查看可以在OpenGL ES驱动程序工具中启用的各种统计信息。单击仪器名称右侧的i以弹出窗口,然后单击配置以显示可记录的可能统计信息列表。特别是,请查看平铺器利用率和渲染器利用率统计数据。启用所需选项,返回上一屏幕,并单击复选框以确保它们已被记录

如果应用程序不可用,则会受到几何体大小的限制。尽你所能减少这种情况(使用我提到的一些技巧),你会看到性能的显著提升。另一方面,如果达到渲染器利用率最大值,则填充率受限,可能需要关闭MSAA、调整片段着色器(如果在OpenGL ES 2.0上),或者减小渲染区域的大小,等等

除此之外,在iOS 4.0上的设备上运行应用程序,并使用Xcode 4附带的新OpenGL ES Analyzer工具。该工具非常适合于建议渲染代码中的热点,或冗余状态调用造成的性能浪费,等等


查看特定的跟踪数据,您似乎花费了大量时间将几何图形复制到GPU。我会考虑使用顶点缓冲区对象(VBO)来显著减少这种情况。

谢谢你的回答。这已经帮了大忙了。我还有一个问题,但没关系:)