关于性能问题优化的小讨论

  大家好,我是阿赵。
  最近很流行把之前制作在安卓或者iOS端的游戏转成微信小程序上架,我所在的项目也有这样的操作。微信小程序是用WebGL来运行的,实际上它的性能很差,只有不到app端的三分之一的性能可用,内存方面也有非常大的限制,所以导致了在微信小程序端的应用比较容易闪退,而且帧率比app端要低很多。
  我的项目同样也遇到了类似的问题,闪退、掉帧等问题很影响游戏的体验。大家都在努力的去尝试解决这个问题。领导也非常的着急,总感觉团队没有这方面的经验,想在外面找些朋友来帮忙解决,包括网上问一些其他公司的人,甚至带着某些同事直接去别的公司去取经。
  在取经完成的第二三天,我们的游戏小程序端的闪退率从原来的百分之10几,掉到了只有百分之三左右了。得到了这个结果,大家都很高兴,领导估计就更高兴了,因为他可以确定团队本身的确没经验没能力解决这个闪退问题,然后得益于他找关系带我们去取经,最终解决了这个问题。
  从不懂技术的人的眼中,解决一个问题,应该是只要大方向改一下,就OK的。比如说,引擎里面有一个什么设置,你只要勾选一下,就可以。或者发布的时候,有个什么选项漏了勾选,然后选一下,就解决问题了。这些问题有可能只是自己没有经验忽略了,所以稍微问一下人,应该就解决了。但实际上是不是真的这么简单了?
  实际情况是,为了解决这个问题,其实我重写了对象池,重写了消耗大的Shader,重写了之前消耗占比比较大的角色移动逻辑,然后再在场景上面做了lua的内存检测和定时回收机制。其实这些问题在领导出去取经之前,就已经做好了,只是一直没有更新出去。然后取经回来的结果,唯一的收获只有一个提高设置可用内存,让低端机直接不能启动,从而欺骗性的降低闪退率(低端机直接启动不了,当然就没有闪退率了),当然,这种手段也是可以用上去的,毕竟低端机没有人权,不需要玩游戏。
  然后就一起更新了,所以得到的结果是,问题在取经后顺利解决了。不过其实我也无所谓,因为虽然整个项目的底层都是我写的,但由于工作室同时开多个项目,我写完了所有的底层之后,就已经去做别的项目组,并不直接参与该项目的管理了,只是由于我是整个底层的作者,有难题还是需要我去解决而已。所以不论怎样,解决了问题就好了。
  领导不懂技术,是很正常的情况。实际上如果领导一定要搞技术,反而没有精力去搞管理工作。不过很多时候,领导自己认为的事情,实际情况并不是那样。如果真的能随随便便问问朋友,找找关系,就能把一个项目做好,把技术问题都解决,那么办公司就太简单了。就算朋友之间的关系有多好,涉及到工作利益上的东西,如果不是有足够利益的诱惑,就算关系再好,有别的公司过来请教,我也不可能把真正的核心问题告诉别人。而能告诉别人的东西,一般网上都能查得到。
  然后是,每个项目的底层框架和设计理念会存在差异,并不是说一个项目的经验就能直接套用在另外一个项目上的。都是需要具体问题具体分析。所以近年来才这么多专门帮别人分析项目性能的服务出现,比如UWA,我也用过。如果是买服务深入项目去做详细分析,我觉得是非常有用的,他们可以帮助项目很具体的找出问题所在,并提供建议针对实际情况去修改。但如果只是提供一下工具,让我们看一下性能,或者只是简单的问问一些笼统的问题,其实对项目的帮助是不会很大的。
  最后再分享一下阿赵我自己解决性能问题的思路。我自己解决问题的思路很简单,先分析消耗的来源,是cpu、gpu还是内存。有了大方向之后,再配合着性能分析工具,逐个值得怀疑的函数去检查,找出真正产生问题的点。当找到了怀疑问题所在的地方,直接对比调用和不调用时候的性能情况。如果确定了产生问题的根源,那么就开始分析函数存在的问题,然后再针对性的进行优化了。
  这些步骤都很细碎,很繁琐,所以是比较耗时间的。查性能问题本身就不是一个很简单的事情,所以有可能大家都很心急,但实际上心态要好。因为真的不存在说听谁谁说改一个设置,问题就能解决这么简单的。问题的出现,往往是由于某一行代码欠缺考虑,或者某个资源做的时候不够规范,诸如此类。如果没有良好的心态,真的是做不到逐个函数去检查,然后找出根源去解决问题的。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值