先扯几句,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
分享到:
相关推荐
4. **CPU占用率降低**:通过优化代码和利用Flex的性能优化策略,例如使用事件驱动的编程模型,开发者能够降低CPU的占用率,提高应用程序的响应速度和用户体验。 5. **SWF文件**:“Skin1.swf”和“gaugesample.swf...
压缩包中的"人物动画 8.25.swf"文件可能是游戏中的一个角色动画,它可能已经过优化,以减少加载时间和播放时的CPU使用率。"test_avatar"可能是一个游戏角色或用户界面元素,同样需要经过优化以提高游戏性能。 总的...
8. **性能监控**:通过监控服务器和客户端的性能指标,如网络延迟、CPU使用率等,可以优化通信效率,确保应用的稳定运行。 理解并掌握这些知识点,开发者就能有效地实现Flex与Java的通信,构建出高效、健壮的Web...
7. **方法调用层次**:每个方法可以展开查看其调用的子方法,逐层深入,找出占用CPU最多的部分,从而确定性能优化的关键点。 8. **价值与成本**:由于Flex的Profile功能是Adobe Flex全功能版本的一部分,它提供了...
### PostgreSQL 性能优化培训知识点概述 #### 一、培训目标与内容概览 本次为期三天的培训旨在帮助参与者深入理解并掌握PostgreSQL数据库的性能优化技巧。通过一系列理论讲解和实战练习,使学员能够有效地识别和...
5. **性能监控**:Debug版本还提供了性能监控工具,如CPU使用率、内存占用等,有助于优化代码性能。 6. **源码调试**:由于提供了源码,开发者可以直接在原始代码中设置断点,理解代码执行逻辑,这对于调试自定义...
3. **性能分析**:通过Debug版本的Flash Player,可以使用Profiler工具来检测内存使用情况、CPU占用率等,找出性能瓶颈。 4. **网络监控**:查看发送和接收的数据,包括HTTP服务请求和Socket通信,这有助于诊断数据...
5. 优化和性能调优:通过低CPU占用率实现高效的代码执行,减少延迟。 6. 用户交互设计:理解如何处理鼠标输入并将其转化为游戏逻辑,提升用户体验。 通过研究这个项目和源码,开发者不仅可以学习到AS3的高级应用,...
- **性能分析**:通过监控内存使用、CPU占用率,开发者可以优化代码性能。 - **事件和错误日志**:详细的事件和错误记录,便于追踪程序异常。 4. **使用步骤** - **安装**:首先,需要在开发环境中安装此Debug...
3. **性能监控**:集成系统资源监控工具,可以监控服务器、数据库和网络等组件的性能指标,如CPU使用率、内存占用、磁盘I/O等。 4. **故障检测**:通过分析测试结果,能及时发现应用性能瓶颈和潜在问题,预测系统在...
10. **性能监控**:监测服务器和客户端的性能指标,如CPU使用率、内存消耗、网络带宽,以及时发现和解决问题。 综上所述,这个项目涉及的不仅仅是简单的播放功能,而是涵盖了从服务器配置、协议理解、客户端开发到...
此外,集成的机箱管理功能简化了运维,而Flex System Manager则提供了统一的管理界面,优化了整个系统的管理效率。 高密度服务器产品介绍: 联想的高密度服务器,如x240 M5,是针对数据中心空间有限但性能需求高的...
这可能包括减少内存占用、提升UI绘制速度、降低CPU使用率等,通常会用到如ANR分析、GPU过度绘制检测等工具。 9. **热修复技术**:在应用发布后,发现并修复错误是常见的需求。热修复技术允许开发者在不更新应用的...
PHP-FPM还提供了更好的错误日志管理和性能监控,便于故障排查和性能优化。 APC(Alternative PHP Cache)是PHP的一个加速器,它缓存了PHP脚本的编译结果,避免了每次请求时重复编译的过程,显著减少了服务器的CPU...
11. **性能优化**:关注内存占用、CPU使用率、网络流量和带宽利用,确保游戏在各种设备上都能流畅运行。 12. **模拟多线程**:尽管Flash本身不支持多线程,但可以通过异步处理、时间片轮转等方式模拟多任务执行,...
发布服务后,需要关注性能监控,包括CPU使用率、内存占用和网络带宽。根据监控结果,可以优化地图服务的缓存策略,调整服务器硬件配置,或者使用负载均衡技术提升系统性能。 7. **集成与扩展** ArcGIS Server ...
4. **性能分析**: Monster Debugger可能还包含了性能监控工具,如CPU使用率、内存占用等,这对于优化AS3代码性能非常有帮助。 5. **错误检测与修复**:当程序出现错误时,Monster Debugger会显示错误信息,包括...
9. **性能优化**:为了提供流畅的用户体验,开发者需要关注小程序的加载速度、内存占用和CPU使用率。可以使用微信开发者工具的性能监控功能,对页面加载、网络请求、渲染性能等进行优化。 10. **发布与更新**:完成...
垂直居中则可以使用`line-height`等于`height`,`position: absolute`配合`top: 50%`和`transform: translateY(-50%)`,或者使用`display: flex`结合`justify-content: center`和`align-items: center`,甚至使用`...