专栏名称: Cocoa开发者社区
CocoaChina苹果开发中文社区官方微信,提供教程资源、app推广营销、招聘、外包及培训信息、各类沙龙交流活动以及更多开发者服务。
目录
相关文章推荐
51好读  ›  专栏  ›  Cocoa开发者社区

Xcode 8 Instruments工具集的变化与趋势

Cocoa开发者社区  · 公众号  · ios  · 2016-10-13 08:10

正文

▲点击上方“CocoaChina”关注即可免费学习iOS开发


原文链接:http://www.jianshu.com/p/2ab57bfd43e3


最近项目比较赶,没看Xcode 8的发布说明,不过,在做性能优化时,发现Instruments工具集比Xcode 7少了几项,被精简的工具中有一项对我们项目影响较大,就是GPU Driver。


Xcode 8 Instruments保留了17个工具。



Xcode 8 Instruments


相比之下,Xcode 7 Instruments装载了19个工具。



Xcode 7 Instruments


被删除的工具分别是Automation和GPU Driver。Automation执行我们编写的脚本并启动在Automation分析应用列表中指定的App,这些脚本模拟了界面点击功能。GPU Driver则从GPU驱动统计接口调用并对相应时间段的CPU占用情况进行采样,用以分析OpenGL (ES)代码的性能。



被移除的工具


趋势分析


下面就Instruments的变更谈谈个人想法。


  1. Automation对应了自动化界面逻辑测试,此次Xcode更新移除它是否会在后期给出更方便的替代品,暂未得到消息,因此令人费解。


  2. GPU Driver的移动与Metal System Trace工具新增了tvOS和macOS对Metal的支持,暗示了苹果将不会推出官方支持的Vulkan,因为GPU Driver的存在主要是分析OpenGL (ES)程序的性能,Metal System Trace新增说明如下图所示。



    Metal System Trace新增说明


那么,在未来的日子里,OpenGL ES 3.0将是iOS支持的最后一个OpenGL ES版本。对于国内多数GPU编程的小团队而言,可能需要同时使用Xcode 7及Xcode 8,工作流依然是在Xcode 8中实现着色器逻辑,用Xcode 7 Instruments进行GPU优化,调校完iOS的着色器性能,再移植至Android端,根据相应的芯片作进一步针对性的优化。当然,对于SenseTime这类有专业GPU开发团队的公司应该是没什么大影响的,因为它有资源实现Metal、Vulkan两套代码以便得到每个平台的最佳性能。当然,我是不会告诉你百度地图的引擎部分也是先在iOS上调试好再往Android上搬运的,这些故事是不能随便告诉别人的。


Xcode 8的GPU相关新增功能


问题来了,既然Xcode 8的Instruments被阉割了,为何我们还要使用Xcode 8呢?原因是,Xcode 8新增了几个实用的GPU调试功能,当然,新功能更多是方便Metal的。


1、查看已上传至GPU的纹理大小



Xcode 8 GPU调试新增功能


此功能可用于OpenGL ES,可方便查看上传到GPU的纹理尺寸及格式和缓冲区大小,比如1920x1080、Luminance8。


2、屏蔽GPU部分功能


严格意义上说,这并非新功能,而是从Instruments OpenGL ES Analysis搬运到Xcode。



Xcode 8新增的GPU调优功能


使用Xcode 8创建新项目,把老项目的代码逐一拷贝进来,发现部分功能可在OpenGL ES程序中使用,可禁用部分GPU功能查看性能表现,如下图所示。



禁用GPU部分功能


比如,选择最小化渲染的像素数量查看Fragment Shader对性能的影响,如下图所示。



最小化渲染的像素数量查看GPU性能影响



微信号:CocoaChinabbs


▲长按二维码“识别”关注即可免费学习 iOS 开发

月薪十万、出任CEO、赢娶白富美、走上人生巅峰不是梦

--------------------------------------

商务合作QQ:2408167315

投稿邮箱:[email protected]