cocos2d 性能优化
cocos2D 性能优化 (新手干货)
cocos2D 性能优化主要就是对于内存的优化
1.纹理大小优化
纹理占用是cocos内存占用的大头,所以优先解决纹理的内存优化。
在TexturePacker软件中,我们可以直接明白的看到纹理占用的内存大小
如:
这是没有优化过的一张纹理内存大小,大小为256KB,
下面是将RGBA8888调整为RGBA4444时纹理内存变化,直接就减少了一半大小
下面是继续将POT模式调整为NPOT模式的内存变化
可以明显看到,纹理大小一下子就约下降至原来的1/3。在效果可以接受的情况下,可以酌情进行上述调整优化。
使用plist好处:
内存问题:OpenGL ES纹理的宽和高都是2次幂数,假设1.png本身是480x320,但是载入内存后,会变成一张512x512的纹理,当我们使用plist把图片拼在一起后,这些浪费的空间就被合理利用起来了。
渲染速度:从OpenGL ES上来说我们应该尽量减少渲染时切换纹理和调用glDrawArray。如果我们是一张张散图,那么每画一个图像都会切换一次纹理并调用一次glDrawArray。而使用了合图,就可以进行批次的渲染。
同时还可以改变图片的大小,或者对大图进行拆分拼接,多用九宫格图片,都可以有效减少纹理大小。
2.资源规范
在我们开发过程中,会用到大量的资源。如果资源管理不规范,会造成很大的内存占用开销。
比如在A文件夹中存放了A场景的资源,在B文件夹中存放了B场景的资源。如果我们A场景中添加一个B文件夹的图片,在跳转到A场景时,不仅加载了A文件夹中纹理,同时也会加载B文件夹中纹理,尽管只是用了B文件夹中的一张图片,但是整个纹理都会加载,这样就会导致很大的内存浪费。
所以我们需要对资源管理进行规范,不同场景都用到的公共的资源需要放到公共文件夹中,大家都可以用。在A场景中只加载A文件夹中的资源,切换场景到B时,加载B中的资源。
3.资源加载释放
场景加载时会加载资源,最好使用分帧加载的方法,减少同一时间内存占用过多。当切换场景时,需要将原来场景的资源释放出去,切换到哪个场景就加载哪个资源,避免无效内存占用。
4.动画优化
帧动画通常占用了很大的内存开销,所以在效果能够接受的情况下,少用或者不用帧动画,用图片或者骨骼动画进行代替。
5.代码优化
创建对象后要记得管理,谁创建谁管理,避免对象没有被销毁导致的内存占用。
做好数据缓存,减少同一帧for循环的查找,减少同一帧频繁创建和释放对象操作;
算法逻辑优化;
6.低配(低内存)手机的特殊处理
低配手机本身拥有的内存就不多,所以当软件占用内存过多时就会造成卡顿甚至崩溃,影响用户体验。
所以在对待低配手机时,可以更大胆的取优化纹理和动画。大图可以适当缩小,动画可以用静态图片代替,尽量保证低配手机能够流畅的运行。
cocos2d 性能优化相关推荐
- ios应用相关的性能优化及参考文档
ios app programming guide: https://developer.apple.com/library/ios/documentation/iphone/conceptual/i ...
- 记 一次U3D大型多人在线网游性能优化经验
就是类似这种网游 -香港明星代言图片 这种老2D网游(十几年前PC端的游戏)现在要把它搬到手机上,因为是纯2D的游戏,采用了大量的图片(动画序列帧),并没有用到 3D的技术,市面上有不少是用Cocos ...
- iOS最全性能优化(中)
续 性能优化(上) 9. 重用和延迟加载(lazy load) Views 更多的view意味着更多的渲染,也就是更多的CPU和内存消耗,对于那种嵌套了很多view在UIScrollView里边的ap ...
- iOS app性能优化
instruments 在iOS上进行性能分析的时候,首先考虑借助instruments这个利器分析出问题出在哪,不要凭空想象,不然你可能把精力花在了1%的问题上,最后发现其实啥都没优化,比如要查 ...
- kali2020进入单模式_蚂蚁集团技术专家山丘:性能优化的常见模式及趋势
陈显铭(山丘) 读完需要 6分钟 速读仅需 2 分钟 陈显铭,花名山丘,就职于蚂蚁集团,对分布式应用架构.服务化.性能优化等有深入的理解.参与支付宝支付链路核心系统,设计.调优应用系统关键能力, 高效 ...
- MegEngine推理性能优化
MegEngine推理性能优化 MegEngine「训练推理一体化」的独特范式,通过静态图优化保证模型精度与训练时一致,无缝导入推理侧,再借助工业验证的高效卷积优化技术,打造深度学习推理侧极致加速方案 ...
- asp.net程序性能优化的七个方面
asp.net程序性能优化的七个方面 一.数据库操作 1.用完马上关闭数据库连接 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器 ...
- java criteria限制条数_java架构—Oracle SQL性能优化
(1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先 ...
- ab测试nginx Nginx性能优化
转自:https://www.cnblogs.com/nulige/p/9369700.html 1.性能优化概述 在做性能优化前, 我们需要对如下进行考虑 1.当前系统结构瓶颈 观察指标 压力测试 ...
最新文章
- python自动化测试看什么书-Python接口自动化测试
- PE学习(一)masm32开发环境和ollyICE使用
- 数字后端——布图规划
- Fine-tunning适用情况
- IDEA2019版最新配置SVN及上传教程-超详细图文详解
- linux下的gdb调试
- Python的第三方库pyppeteer
- Android 内部存储安装apk文件实现
- SQLite 的日期时间函数
- C-Free 5.0下载和安装教程
- Codeforces Round #532(Div. 2) B.Build a Contest
- 国科大学习资料--矩阵分析与应用(李保滨)--2016年期末考试试卷
- 小程序优购商城项目总结
- AWS简介(Amazon Web Services )
- 使用 NVIDIA Kaolin Wisp 重建3D场景
- printf二进制输出
- Linux中阶—远程接入sshsftp(八)
- openwrt mesh网络设置
- Echarts官方文档
- 129、易燃气体的分级