关于游戏的优化的文章已经非常多和详尽了,包体大小、合图压缩、音频压缩等,所有的优化都是围绕着cpu和gpu开展。
目前的硬件水平足以支持大部分非3D游戏,drawcall的场景基本上不会有超过一百的情况,2D游戏的顶点数基本上可以忽略。
一.内存优化
1.内存泄漏
在最近的项目中使用了C11的智能指针,经过一年的使用证明这是不是一个成功的选择。虽然已经没了自己管理的烦躁,但是增加了内存泄漏的几率。毕竟不是所有人都能完全理解和掌握shared_ptr的使用。 建议使用cocos2dx自带的轻量级智能指针,采用了引用计数,并且没有了C11智能指针循环引用及其他使用容易导致引用计数异常的问题。
这里有以前写的总结,处理C11智能指针的内存泄漏,关键是第四点,切忌安全使用。
http://blog.csdn.net/hanbingfengying/article/details/52909071
2.缓存(材质缓存,精灵帧缓存)管理
这里必须要引入过渡场景,用于removeunused的缓存,然后预加载下一个场景需要使用的资源。 并且cocos2dx提供了api可以查看内存中所有的缓存,做为开发必须能完全熟知内存中的这些缓存,能及时判断哪些材质是多余的。
这里要多提的一点是,不使用jpg,android使用pkm,ios使用pvr是非常有必要的。特别对于8000*8000超大地图。
3.高性能对象池
传统对象池只有一个list保存所有对象,每次使用循环遍历查找未使用的对象。
这里的优化是新增一个队列保存所有可使用的对象。每次对象使用完进行push_front的操作,每次使用通过pop_front获取。
二.CPU优化
1.近似数学函数
开方、三角函数近似替换算法,计算两点间的距离(曼哈顿距离、牛顿迭代或者使用平方数值做比较),位移运算(针对频繁的乘除2的n次幂)等。
2.算法
在算法的选择上其实渗透在我们的每一个即使非常小的功能模块,对于不是专门研究算法的我们,算法更多是一种意识。拒绝所有的时间复杂度O(n*n)的操作,永不高估CPU的计算性能,在现有的操作上力求更低的计算量。 然后有的放矢的去选择适合自己项目的算法。
3.分帧
分帧是比较坏的情况,因为这时候优化可能到了末尾。确实有一些cpu密集型的计算需要分帧甚至开线程来解决了。
PS:空间换时间。其实上面三条包括我的高性能的高斯模糊算法那篇文章,基本上对于cpu的优化核心都是空间换时间。
三.GPU优化(Drawcall优化)
1.超大图的切片
切片太小对于drawcall是非常有影响的,目前使用最大化切片2048*2048,并且图片使用压缩格式使用存在于缓存中。
2.合图(多摄像机场景)
对于摄像机比较多的场景,由于底层是遍历摄像机,每个摄像机执行一次场景的全部绘制。
所以在合图的时候需要按照摄像机来分层合图,不要把不同摄像机的图片合到一起。
做为开发要能够根据看到的场景预估drawcall数量,在判断出异常的时候分步优化层级drawcall数量。
不建议使用globalZorder,因为globalZorder大于0和小于0的部分被独立渲染,不会参与批处理。
3.粒子特效的选择。
切忌使用pu
4.通用艺术字图集代替默认字体。
补充:
四.3D模型的优化
顶点数即面数,要限制。
模型材质大小限制。
动作帧数限制。
模型动画预创建。

cocos2dx 通用性能优化方案相关推荐

  1. web 折线图大数据量拉取展示方案_【第2010期】QQ音乐Android客户端Web页面通用性能优化实践...

    前言 今日早读文章由QQ音乐客户端开发工程师@关岳分享,公号:云加社区(ID:QcloudCommunity,腾讯云官方开发者社区)授权分享. 正文从这开始~~ QQ音乐 Android 客户端的 W ...

  2. QQ音乐客户端Web页面通用性能优化实践

    导语 | QQ音乐 Android 客户端的 Web 页面日均 PV 达到千万量级,然而页面的打开耗时与 Native 页面相距甚远,需要系统性优化.本文将介绍 QQ 音乐 Android 客户端在进 ...

  3. QQ音乐Android客户端Web页面通用性能优化实践

    QQ音乐 Android 客户端的 Web 页面日均 PV 达到千万量级,然而页面的打开耗时与 Native 页面相距甚远,需要系统性优化.本文将介绍 QQ 音乐 Android 客户端在进行 Web ...

  4. webview加载的页面和浏览器渲染的页面不一致_QQ音乐Android客户端Web页面通用性能优化实践...

    QQ音乐 Android 客户端的 Web 页面日均 PV 达到千万量级,然而页面的打开耗时与 Native 页面相距甚远,需要系统性优化.本文将介绍 QQ 音乐 Android 客户端在进行 Web ...

  5. 分布式专题-数据库分库分表之Mycat01-数据库性能优化方案

    目录导航 前言 为什么要分库分表 数据库性能瓶颈主要原因 数据性能优化方案 SQL 与索引 表与存储引擎 架构 配置 操作系统与硬件 架构演进与分库分表 单应用单数据库 多应用单数据库 多应用独立数据 ...

  6. RHEL/CentOS通用性能优化、安全配置参考

    RHEL/CentOS通用性能优化.安全配置参考 本文的配置参数是笔者在实际生产环境中反复实践总结的结果,完全适用绝大多数通用的高负载.安全性要求的网络服务器环境.故可以放心使用. 若有异议,欢迎联系 ...

  7. Mysql性能优化方案

    2019独角兽企业重金招聘Python工程师标准>>> 内容简介:这是一篇关于mysql 性能优化的文章.网上有不少mysql 性能优化方案,不过,mysql的优化同sql serv ...

  8. kvm性能优化方案---cpu/内存/磁盘/网络

    kvm性能优化方案 kvm性能优化,主要集中在cpu.内存.磁盘.网络,4个方面,当然对于这里面的优化,也是要分场景的,不同的场景其优化方向也是不同的,下面具体聊聊这4个方面的优化细节. cpu 在介 ...

  9. 人人都能掌握的Java服务端性能优化方案

    转载自 人人都能掌握的Java服务端性能优化方案 作为一个Java后端开发,我们写出的大部分代码都决定着用户的使用体验.如果我们的代码性能不好,那么用户在访问我们的网站时就要浪费一些时间等待服务器的响 ...

  10. react性能优化方案_React灵敏且性能卓越的Spray + Akka解决方案,以“在Java和Node.js中发挥并发性和性能”...

    react性能优化方案 在我以前的文章中,我研究了一个虚拟的交易引擎,并将基于Java的阻止解决方案与基于Node.js的非阻止解决方案进行了比较. 在文章的结尾,我写道: 我怀疑随着Node.js的 ...

最新文章

  1. 计数排序之python
  2. tomcat 多实例启动脚本
  3. iOS高级教程:处理1000张图片的内存优化
  4. AI真的会杀人?DeepMind开发了二维网格游戏来做测试
  5. Gossip数据传播协议
  6. 为什么Domain controller上的time synchronization非常重要?
  7. mysql mycat 路由规则_Mycat分库路由规则
  8. python设置横坐标间隔_如何在matplotlib中更改刻度之间的间距?
  9. Mybatis注解的方式,如何实现MySQL ,update后,返回更新后的值
  10. 数据挖掘:概念与技术 笔记
  11. 山石防火墙CLI创建VLAN
  12. 基础篇:数据库 SQL 入门教程
  13. 大数据之Kafka介绍
  14. 计算机简历个人优势,简历个人优势怎么写
  15. 用python画雪花形状_python海龟画图制作的漂亮的下雪场景动画效果冰雪奇缘
  16. iTween基础之Move(移动)
  17. 找到100亿个URL中重复的URL
  18. Collections.sort()方法为List集合内对象进行排序
  19. Serverlet简介及理解
  20. 网红湾湾否认与李易峰恋情,网友:其实两人很般配!

热门文章

  1. php变异测试工具,科学网—两种突变检测的matlab代码 - 张凌的博文
  2. Firefox的下载处理器:FlashGot v1.0 Final颁发
  3. 2513: 小勇学分数(公约数问题)
  4. 申城「三日谈」:言汇百家,思通以达(SDCC 2017上海站PPT集锦)
  5. 机器学习——共享单车数据集预测
  6. 123457123457#0#-----com.yuming.TruckCarRun01--前拼后广--大卡车游戏cym
  7. Deepin20.4系统中wine优化设置
  8. win7用友u8安装教程_win7系统安装用友u8的方法 win7用友u8安装教程
  9. android+锁屏显示农历,在手机锁屏界面上显示农历日期和天气
  10. python邮件合并的基本操作步骤_邮件合并的基本操作步骤 - 卡饭网