IOS renderer性能问题求助!

打包IOS renderer (ms) 高达25!
然后我在 IOS上打开浏览器, 运行H5版的, render (ms) 竟然只有8!
IOS真机性能比IOS的H5还差? 那ios的native的存在意义是什么?:disappointed_relieved:

游戏准备上架苹果商店,但是现在帧率太低了,总不能打个IOS包做个webview吧?

1赞

合并渲染什么的都做了, drawcall基本在160左右, 游戏是IO类型, 参考球球大作战。

安卓的 renderer (ms) 也只有5左右, 要被ios native搞死了!

你检查一下你的项目里有在哪些地方设过帧率没?cocos creator 导出的ios native app这边有个bug,如果在js的全局代码里设置了帧率会导致每帧跑两次mainLoop(导致的结果就是每帧时间x2), 至少从2.1.0到2.1.2这个bug是一直存在的

没有调用 setFrameRate :worried:

这么严重的bug为什么不给开发组反馈?
@jare

原生上的话可以用XCode或者AS先检查下是由于什么问题导致的renderer有25?iOS原生上面是没有JIT的,浏览器是有JIT的,所以大量的计算上面会开销高一些,需要针对这些热点的地方做优化。
后续2.2版本会优化原生渲染的性能到时候也会有比较大的提升

楼上有人提出了一个 mainloop2次的bug,开发组有注意到吗?
dj41560034小时前
你检查一下你的项目里有在哪些地方设过帧率没?cocos creator 导出的ios native app这边有个bug,如果在js的全局代码里设置了帧率会导致每帧跑两次mainLoop(导致的结果就是每帧时间x2), 至少从2.1.0到2.1.2这个bug是一直存在的

全局调用cc.setFrameRate导致的问题,我们后面会修一下,不过只要把setFrameRate放到其他地方调用一下就行。或者在_runMainLoop里面加上下面的代码也行:
(这里暂时先这样临时处理即可,后面版本我们会有正式的解决方案)

不过你这边并没有使用到cc.setFrameRate,所以对于你的renderer性能的问题,我更希望拿到相应的一些数据或者是信息才能更好的分析,否则都是去进行一些猜测,效率很低

@BigBear 请问一下设置帧数的 2.0.10存在吗

安卓的renderer ms只有5, 安卓千元机可以稳定60帧, 苹果X竟然只有30帧,代码都一样的。
IOS原生比IOS H5多一倍时间损耗,这个我不能理解 。
logic ms也是, 安卓 稳定在6, IOS 浏览器运行H5版本 也只有8左右, IOS native 接近15!

我想在xcode上跟踪 renderer实际逻辑流程, 应该关注哪个代码?
我搜索 Render 只找到 generateStats, 完整的render过程和logic过程分别要搜什么关键字??

mainLoop 里面的 renderer?

一样的问题, 卡的要死,

老铁, 解决了告诉我下. 拜托.

这是JSC的数据,有JIT和没JIT,执行效率上本身就是差很多倍的

你用Xcode的Instruments去看下,找下问题在哪。要不就提供个demo过来

如果你是界面卡, 字体用CHAR就能解决, 但是现在的CHAR模式bug比较多, 自动缩放什么的都得自己写

设置 cc.macro.ENABLE_CULLING = true;
安卓draw call 最多130, IOS 会飙到200… 跨平台还是比较麻烦的啊,只能单独优化了

请问 2.2.0的IOS native是否做了JIT优化?:wink:
@BigBear

测试了两天, 确定问题就是在JSC上, 我们spine做了二次装备绑定, 使用findbone查询骨骼信息,再对node进行同步设置。
屏蔽掉之后帧率提升了10。。。还有其它类似的调用。 findbone可以把谷歌信息导成配置表去读取,设置node位置没有找到什么办法代替

2.0开始ENABLE_CULLING已经是没有用的了

原生使用自动合批的话,是要在main.js里面加上这个代码:


这样可以开启dynamicAtlas,对drawcall会有帮助

2.2会大幅优化原生渲染的性能,比之前1.9还有2d-lua的渲染性能还要好些的。JIT的话,只要是iOS native的app都用不了哦,苹果系统是直接禁用了的。

这样看下来应该是这个二次绑定功能的代码执行效率问题,不太清楚你们这个二次装备绑定的实现,这个只能你们看下是通过调整业务还是逻辑的方法去做了。另外为啥不用角色换装呢?

thanks.