Xcode 8 Instruments工具集的变化与趋势
来源:互联网 发布:网络结婚证免费制作 编辑:程序博客网 时间:2024/05/16 07:14
最近项目比较赶,没看Xcode 8的发布说明,不过,在做性能优化时,发现Instruments工具集比Xcode 7少了几项,被精简的工具中有一项对我们项目影响较大,就是GPU Driver。
Xcode 8 Instruments保留了17个工具。
相比之下,Xcode 7 Instruments装载了19个工具。
被删除的工具分别是Automation和GPU Driver。Automation执行我们编写的脚本并启动在Automation分析应用列表中指定的App,这些脚本模拟了界面点击功能。GPU Driver则从GPU驱动统计接口调用并对相应时间段的CPU占用情况进行采样,用以分析OpenGL (ES)代码的性能。
趋势分析
下面就Instruments的变更谈谈个人想法。
- Automation对应了自动化界面逻辑测试,此次Xcode更新移除它是否会在后期给出更方便的替代品,暂未得到消息,因此令人费解。
GPU Driver的移动与Metal System Trace工具新增了tvOS和macOS对Metal的支持,暗示了苹果将不会推出官方支持的Vulkan,因为GPU Driver的存在主要是分析OpenGL (ES)程序的性能,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的纹理大小
此功能可用于OpenGL ES,可方便查看上传到GPU的纹理尺寸及格式和缓冲区大小,比如1920x1080、Luminance8。
2、屏蔽GPU部分功能
严格意义上说,这并非新功能,而是从Instruments OpenGL ES Analysis搬运到Xcode。
使用Xcode 8创建新项目,把老项目的代码逐一拷贝进来,发现部分功能可在OpenGL ES程序中使用,可禁用部分GPU功能查看性能表现,如下图所示。
比如,选择最小化渲染的像素数量查看Fragment Shader对性能的影响,如下图所示。
原文链接:http://www.jianshu.com/p/2ab57bfd43e3
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
- Xcode 8 Instruments工具集的变化与趋势
- Xcode 8 Instruments工具集的变化
- Xcode中Instruments 的工具模块
- Xcode调试工具Instruments指南
- XCode中 instruments 工具使用
- Xcode 8 Instruments 学习
- Xcode 8 Instruments 学习
- 编程技术的变化趋势,SO 新工具可查询
- 年变化趋势、月变化趋势相互转换与对应输入框的转换
- Instruments工具的使用
- Instruments工具的使用
- instruments工具的使用
- Web的变化趋势
- Xcode 8 Instruments系列讲解
- iPhone Instruments工具的使用
- Instruments 调试工具的使用
- 汽车软件设计的变化趋势
- 关于xcode Instruments的简单使用
- Linux如何查找大文件或目录总结
- 欢迎使用CSDN-markdown编辑器
- 引入极光安卓闪退,NoClassDefFoundError解决方法
- VS2010远程调试环境配置详解
- 关于EF框架EntityState的几种状态
- Xcode 8 Instruments工具集的变化与趋势
- 插件机制的实现核心类
- tinyxml_2_6_1.tar.gz安装与移植
- twemproxy auth认证时序
- IMP-00058: 遇到 ORACLE 错误 12592 TNS包错误 解决办法
- 90167 No.app bundles found in the package 解决办法
- msyql5.7.12 忘了root密码解决方法
- Android tips(十四)-->解决AppBarLayout滑动不畅的问题
- linux tomcat日志错误Cannot run without an instance id & java.net.UnknownHostException