`

Flex性能优化之cpu占用率

    博客分类:
  • Flex
阅读更多
先扯几句,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缓和一下,执行效率反而高吧)

大家在项目中遇到处理大型后台数据时,也可以借鉴这个思路,如果你由更好的解决方案,也希望一同分享。

文章引用http://zyjwy02.iteye.com/blog/381918
  • 大小: 900 Bytes
  • 大小: 3.4 KB
  • 大小: 9.2 KB
  • 大小: 6.3 KB
  • 大小: 22.8 KB
分享到:
评论

相关推荐

    Yibiao.zip_GaugeSkins_Skin1.swf_flex_flex4_gaugesample.swf_仪表盘

    4. **CPU占用率降低**:通过优化代码和利用Flex的性能优化策略,例如使用事件驱动的编程模型,开发者能够降低CPU的占用率,提高应用程序的响应速度和用户体验。 5. **SWF文件**:“Skin1.swf”和“gaugesample.swf...

    test_avatar.rar_flex_游戏优化

    压缩包中的"人物动画 8.25.swf"文件可能是游戏中的一个角色动画,它可能已经过优化,以减少加载时间和播放时的CPU使用率。"test_avatar"可能是一个游戏角色或用户界面元素,同样需要经过优化以提高游戏性能。 总的...

    flex与java通信

    8. **性能监控**:通过监控服务器和客户端的性能指标,如网络延迟、CPU使用率等,可以优化通信效率,确保应用的稳定运行。 理解并掌握这些知识点,开发者就能有效地实现Flex与Java的通信,构建出高效、健壮的Web...

    flex_Profile.docx

    7. **方法调用层次**:每个方法可以展开查看其调用的子方法,逐层深入,找出占用CPU最多的部分,从而确定性能优化的关键点。 8. **价值与成本**:由于Flex的Profile功能是Adobe Flex全功能版本的一部分,它提供了...

    PostgreSQL 性能优化培训 3 DAY

    ### PostgreSQL 性能优化培训知识点概述 #### 一、培训目标与内容概览 本次为期三天的培训旨在帮助参与者深入理解并掌握PostgreSQL数据库的性能优化技巧。通过一系列理论讲解和实战练习,使学员能够有效地识别和...

    Flex Debug-debug版本的安装.exe

    5. **性能监控**:Debug版本还提供了性能监控工具,如CPU使用率、内存占用等,有助于优化代码性能。 6. **源码调试**:由于提供了源码,开发者可以直接在原始代码中设置断点,理解代码执行逻辑,这对于调试自定义...

    Debug调试版本的flash,用于flex调试代码

    3. **性能分析**:通过Debug版本的Flash Player,可以使用Profiler工具来检测内存使用情况、CPU占用率等,找出性能瓶颈。 4. **网络监控**:查看发送和接收的数据,包括HTTP服务请求和Socket通信,这有助于诊断数据...

    AS3游戏实战(有源码)

    5. 优化和性能调优:通过低CPU占用率实现高效的代码执行,减少延迟。 6. 用户交互设计:理解如何处理鼠标输入并将其转化为游戏逻辑,提升用户体验。 通过研究这个项目和源码,开发者不仅可以学习到AS3的高级应用,...

    flashplayer_10_ax_debug

    - **性能分析**:通过监控内存使用、CPU占用率,开发者可以优化代码性能。 - **事件和错误日志**:详细的事件和错误记录,便于追踪程序异常。 4. **使用步骤** - **安装**:首先,需要在开发环境中安装此Debug...

    HP LoadRunner11.0

    3. **性能监控**:集成系统资源监控工具,可以监控服务器、数据库和网络等组件的性能指标,如CPU使用率、内存占用、磁盘I/O等。 4. **故障检测**:通过分析测试结果,能及时发现应用性能瓶颈和潜在问题,预测系统在...

    FMS视频直播,点播源码

    10. **性能监控**:监测服务器和客户端的性能指标,如CPU使用率、内存消耗、网络带宽,以及时发现和解决问题。 综上所述,这个项目涉及的不仅仅是简单的播放功能,而是涵盖了从服务器配置、协议理解、客户端开发到...

    联想刀片及高密度服务器产品介绍.pptx

    此外,集成的机箱管理功能简化了运维,而Flex System Manager则提供了统一的管理界面,优化了整个系统的管理效率。 高密度服务器产品介绍: 联想的高密度服务器,如x240 M5,是针对数据中心空间有限但性能需求高的...

    Android应用开发揭秘14

    这可能包括减少内存占用、提升UI绘制速度、降低CPU使用率等,通常会用到如ANR分析、GPU过度绘制检测等工具。 9. **热修复技术**:在应用发布后,发现并修复错误是常见的需求。热修复技术允许开发者在不更新应用的...

    Nginx+PHP-FPM+APC=绝妙的组合.pdf

    PHP-FPM还提供了更好的错误日志管理和性能监控,便于故障排查和性能优化。 APC(Alternative PHP Cache)是PHP的一个加速器,它缓存了PHP脚本的编译结果,避免了每次请求时重复编译的过程,显著减少了服务器的CPU...

    Flash网络游戏开发入门经验共享

    11. **性能优化**:关注内存占用、CPU使用率、网络流量和带宽利用,确保游戏在各种设备上都能流畅运行。 12. **模拟多线程**:尽管Flash本身不支持多线程,但可以通过异步处理、时间片轮转等方式模拟多任务执行,...

    ArcGIS Server 入门好例子

    发布服务后,需要关注性能监控,包括CPU使用率、内存占用和网络带宽。根据监控结果,可以优化地图服务的缓存策略,调整服务器硬件配置,或者使用负载均衡技术提升系统性能。 7. **集成与扩展** ArcGIS Server ...

    Monster Debugger

    4. **性能分析**: Monster Debugger可能还包含了性能监控工具,如CPU使用率、内存占用等,这对于优化AS3代码性能非常有帮助。 5. **错误检测与修复**:当程序出现错误时,Monster Debugger会显示错误信息,包括...

    V2EX社区论坛微信小程序源码+截图

    9. **性能优化**:为了提供流畅的用户体验,开发者需要关注小程序的加载速度、内存占用和CPU使用率。可以使用微信开发者工具的性能监控功能,对页面加载、网络请求、渲染性能等进行优化。 10. **发布与更新**:完成...

    最全前端面试题-2(css篇-上百篇题集整理1个月)

    垂直居中则可以使用`line-height`等于`height`,`position: absolute`配合`top: 50%`和`transform: translateY(-50%)`,或者使用`display: flex`结合`justify-content: center`和`align-items: center`,甚至使用`...

Global site tag (gtag.js) - Google Analytics