cocos2d.js 启动loading每次都要3s才能加载完,用户体验不好。求大神指点优化和解决方案。

boss说每次都要3秒,太狗屎了,体验不好,求大神给出解决方案...

优化前游戏在iPhone 4上从启动画面到渲染第一帧需要8秒左右,一直卡在启动画面不动。分析了一下代码,怀疑AppDelegate::didFinishLaunchWithOptions里做了太多事情。用Instruments分析一下,果然didFinishLaunchWithOptions用了5s,其中ScriptingCore::runScript用了2.5s,向JSContext注入binding用了0.5s,剩下各种SDK初始化用了2s。优化方案

1. 加速代码的执行速度

ScriptingCore::runScript

ScriptingCore::runScript主要在读取js代码、编译然后执行。这里有几个优化的方法:

1. 将JS代码编译成bytecode(jsc)再打到包里,这样加载时就不用再编译了。

2. 将JS代码用UglifyJS、JSMin等压缩工具压缩,并合并成一个JS文件,减少磁盘IO的大小和次数。

压缩打包JS会带来一些问题。压缩后错误信息会比较难看,因为symbol都被压成1个字母了。另一个更严重的问题是,我们有动态更新代码的需求,以前每次只需要更新改动的JS文件,打包成一个文件后每次都更新一整个文件。

并行化

Instruments的数据里可以看出有米广告的SDK居然用了1.3s载入,在5s上也需要200ms,干脆放到单独的线程里去做,这样不会block主线程(iPhone4还是单核的A4处理器,所以开多少线程都没有什么卵用,4s和iPad2之后用的至少是双核的A5,收效就很明显)。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){

// 有米广告的初始化代码

[CocoBVideo cBVideoInitWithAppID:appID cBVideoAppIDSecret:secret];

[CocoBVideo cBCloseAlertViewWhenWantExit:false];

});追问

这是从哪拷贝过来的? 有靠谱的方案吗? 我现在已经是3s 了,想要优化到1.5s内

温馨提示:答案为网友推荐,仅供参考
相似回答