先扯几句,team中有一个正在试运行的项目,最近被客户打了回来,问题在于flex的性能问题。症状如下,当as的service层去调用后台java servlet时,ui会弹出一个反复播放的loading动画,回调函数取得数据后进行解析,然后重绘ui。这是一个被大家普遍使用的loading+异步的客户端处理方式。但是问题在于,当执行回调函数时,本该重复执行的动画,出现了停顿状态(如果从调用到显示需要花费6秒,那么这个停顿可能就要占掉3秒),而且整个载入时间也偏长,严重影响了客户体验。
为了解决这一问题,走了不少弯路,一些可能的原因被一一排除,但是还是找不出问题所在。幸好在群友飞翔大师的提示下,把问题圈定在浏览器占用cpu过高,造成浏览器假死这一情况。一下是我排查及解决思路,希望能对大家有帮助
1、因为是cpu占用率过高引起,毋庸置疑肯定是代码造成的,于是启动从来没用过的flex profile工具来查找罪魁祸首method
选择你要检测的app后,切换到profile视图
这个对话框是让你选择监控方式,上面是内存使用情况,下面是性能(执行所花费时间)
点击按钮。
双击performance profile,会将所有初始化时执行的到函数性能都罗列出来
找到耗时最多的那个你自己写的method,就是我们要下手的目标(上图已经是优化后的截图了。之前某个method要占用1800ms左右时间)
切入代码一看,乖乖!原来是2层for循环搞得鬼,这2次循环遍历服务器返回数据然后,把他们拼装成as3的vo对象。new了成千上万个对象。cpu这么折腾一下占用率不飙上去就怪了。
解决思路,as3里没有线程概念,故不能让for循环再执行的时候来个sleep()让cup喘口气,因此我们需要借助Timer类来帮我们实现cpu喘息的功能。
Timer类的使用大家查查api应该都清楚了,new Timer(执行间隔,执行次数)。我们可以让第一层for循环转变为一次timer操作,执行次数即for的length,执行间隔即你想让cpu喘息的时间。然后再将一些变量设置成static就能替代我们的第一层for循环的功能。
ok,调优完毕,进行测试,果然cpu使用率下来了,而且动画不会产生明显的停顿,再用profile一监控,发现这一步操作由原来的1800ms降低到800ms,还节省了1秒时间,(可能是让cpu缓和一下,执行效率反而高吧)
大家在项目中遇到处理大型后台数据时,也可以借鉴这个思路,如果你由更好的解决方案,也希望一同分享。
momoko8443 flex development cpu占用率, flex性能优化, profile, 执行效率
分享到:
相关推荐
学习了Flex,主要是被它的炫丽的外表所吸引,但用起来,性能却是很大问题,这里有教你性能上的调优
这个文档是关于flex怎么优化的,因为flex对机器的要求比较高,所以在开发项目的时候会想到怎样优化,而这个文档就提供了具体的方法。
flex builder 优化
flex优化全集flex优化全集flex优化全集flex优化全集flex优化全集
flex编译优化方法,以及Flex工程编译慢的优化方案
公司内部资料:遍寻网络资源和相关书籍,历经磨难(网上说的好多都不靠谱),经过自己的理解和实践,总结出来一套可行方案,以供各位Flex开发爱好者们参考交流
基于flex性能测试的一些简单流程描述和测试方法
FLEX内存释放优化原则,内存泄露解决方法,内存泄露情况
Flex 性能简介 pdf 网络上收集的 希望对大家有帮助 初次上传多多关照
老外写的Flex优化指南,内容很精彩,不容错过
Flex性能,内存管理和对象缓存,玩Flex的朋友可以看看。
flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图...
Flex 内存 技巧 整理
FLEX特效FLEX特效FLEX特效FLEX特效 FLEX特效FLEX特效FLEX特效FLEX特效 FLEX特效FLEX特效FLEX特效FLEX特效 FLEX特效FLEX特效FLEX特效FLEX特效
Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex ...
随着Flex越来越多的被人们所熟知,越来越多的互联网也开始了RIA应用。
FLEX播放器 flex 开发AIR及Flex之mp3播放器教程 FLEX播放器 flex 开发AIR及Flex之mp3播放器教程
flex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex学习的好资源啊
Flex简介Flex简介Flex简介Flex简介Flex简介
flex事件flex事件flex事件flex事件flex事件