本文来自:http://blog.csdn.net/lihe111/archive/2009/09/09/4534404.aspx
本文将保持简练的风格,直接提供10个贴心小贴士,让你的Flex应用程序快捷,精炼,反应迅速。
1号规则:保持“清洁”
总体来说,保持清洁的代码是个好的习惯,这样代码不仅格式恰当,可读,还不会有任何遗漏。没有内存泄露,没有cpu检测工具,就是一个清洁的对象,可以被GC回收。
1) 管理好你的事件监听- 这一消息有双重含义。首先,你应该经常移除不再需要的事件监听,因为它们会导致阻碍垃圾回收的对象引用,也就相当于内存泄露,这样子就很难进行跟踪,也不利于应用程序的性能发挥。你可以使用被引用的事件监听以尽量减少内存泄露,但是在不需要它们的时候,你仍然应该将它们清洁干净。第二就是:如果未能移除事件监听,则会引发性能问题。事件句柄可在你的应用程序里触发,你可能都未意识到。你在子组件里派遣一个事件,在DOM树(上层物件)上的句柄也会触发同一事件。如果你不希望发生此类情况,就要保持事件句柄的清晰;让它们处理特定的事件类型,当你的应用程序不再需要它们时,移除它们。
2) 卸除加载器和时间,当你使用基于加载器的物件(图像,SWFLoader等),调用unloadAndStop()以从加载器上卸除内容,并调用GC是一个好的习惯。这样可以释放有价值的系统资源,而如果不需要cpu cycles时,它们也不会被浪费。我经常为静态图像文件这么做,以防止过多使用内存。
3) 处理- 我发现在自定义组件,数据管理器或者在清理物件资源的视图里创建"dispose()"函数是一个非常好的办法。当你使用完物件时,dispose() 方法需要被清楚地调用,但是 dispose方法会处理任何需要的事项以清洁物件,释放资源。例如,停止计时器,移除事件监听,卸除加载物件,设定变参考为零,等等。基本上,要移除所有可能导致内存泄露或吞噬场景后的cpu cycles。是的,它用cpu cycles来调用dispose方法,但是相信我。这个方法非常之简单,计算复杂程度低,可以清楚地处理物件,而不是耗费时间,处理计算资源,及跟踪泄露和性能问题的预算。
2号规则: 如果你不一定需要做,就不要做
另外一个需要遵守的规则就是:如果你不一定需要做它,就不要做。不,我不是说“不要做你的工作”或“不要刷牙”。你应该做这些。我的意思是如果你不一定需要做的话,不要做计算程度复杂或非常耗费资源的事。
4) 恰当处理集合– 有几个问题我一直在观察,它们一直都是我每次看到时都最需要进行改变的。集合(ArrayCollection, XMLListCollection 等等) 是辅助类,包裹起初步结构如array或xmllist。为了让使用这些初步结构简单些,集合类会采取行动,这些行动计算程度复杂,但是你不会意识到。其原因就是每次你增加,移除或者更新一个条目,事件被派遣。每次你更新一个集合时,它们也会被派遣。
第一个贴士注重的是集合事件。如果你循环一个集合,更新了100,000个条目,100,000个事件就会被派遣。这会导致大量的性能实施,并会完全锁住你的应用程序UI.如果你不需要这些集合事件被派遣,你可使用disableAutoUpdate()函数以暂停集合事件。要确保完成后,或者再需要时,要将它们翻过来,使用enableAutoUpdate() 函数。
第二个贴士是,如果不需要,就不要使用集合。如果你就是需要循环100,000个条目,而你不使用数据绑定,那就使用任一array。
第三个关于集合的贴士仅在当你使用一个过滤器函数过滤集合时适用。如果采用了一个过滤器函数,你在给集合添加新物件时不需要每次都调用 refresh() 函数。在一些未预料的场合,这甚至会导致性能损失。例如,如果你有个与集合绑定的datagrid,还有另一个过程更新该集合。如果在集合上有个过滤器,当你调用结合的addItem方法时,它会被自动过滤。在添加条目之后调用refresh()方法会导致datagrid上的列表数据失效,从而使得整个的datagrid都要被重新有效化,重新编画。但是当进行优化时,可能轻易被忽略,并导致应用程序的性能发生急剧变化。
5) 使用延迟实例化 – 在缺省状态下,Flex内的所有导航容器(tab nav, accordion, viewstack等等)仅会在需要时创建子容器。这就防止了应用程序创建成千上万个不需要的组件,从而有助于保持应用程序的顺利运行,而不会占用资源或被锁住。如果不小心,改变创建原则可能会导致大问题。当创建你的自定义组件时,你还应该记住延迟实例化。不要在constructor里创建子物件。反之,覆盖createChildren() 方法,在那里创建。这样,你的组件也会遵循延迟实例化规则,但是不会有任何难以跟踪的性能问题。
6) 对象再循环 vs 新对象- 我之前已经探讨过这个问题,现在我再来谈谈它。再使用已有的对象往往比创建新的对象要“节省“资源些。它常与数据虚拟化联系在一起。
7) 如果没有发生改变,不要无效化/摧毁/或者重新验证你的对象。
如果你正在构建自定义组件,而有人改变了一个属性(通过getter/setter), 如果进入值没有改变,则不要无效化组件属性。因为这样会导致组件通过整个无效化/验证周期,从而使得属性被重新验证/提交,在显示列表上重新绘制对象。仅在真正发生改变时无效化属性。下面给出一个范例证实此概念:
public function set myProperty( value : Number ) : void
{
if ( _myProperty != value )
{
_myProperty = value;
propertiesChanged = true;
invalidateProperties();
dispatchEvent( new Event( "change" ) );
}
}
3号规则:恰当使用语言
ActionScript 语言的特点可启动性能。
8) 动态/属性 VS. 类型化对象-动态和属的对象自有它们的地位。它们是属性,灵活,可以用任何特性进行修改,可在广泛的场合使用。然而,如果你有个类型化对象,而不需要使用属性,则使用强类型化对象。ActionScript 3的强类型化本质部分说明了它为什么快捷。强类型化对象的访问属性比动态对象的访问属性要快。
9)恰当使用常量-如果你有个从未改变的值,但是你一直引用它,使用常量。访问常量可以更快,而需要较少的运行时间。
10) 使用静态成员-静态属性和函数不要求调用或访问变量实例。既然它们不要求实例,从类直接访问它们就快得多,也不需要内存以实例化对象。应该将功用函数或不要求特定实例的属性的函数输入静态函数中。
说到第九点中的常量,通常我建议将常量静态化。这有助于你保持内存使用量最小化。而它不需要附属到类实例上。
所有这些看上去都似乎无关重要的编码活动,但是相信我,当这些原则累计起来,就能发挥大作用了。在现实里,它常常可归结为恰当的编码活动,而上面仅仅强调了你在创建应用程序时需要注意的几点事项而已。
分享到:
相关推荐
- **MXML**:一种标记语言,用于定义Flex应用程序的界面布局和组件属性。 - **ActionScript**:一种面向对象的脚本语言,用于控制程序逻辑。 - **Flex Builder**:一个集成开发环境(IDE),支持MXML和ActionScript...
内容概要:本文详细介绍了无线电能传输技术在电动汽车充电中的应用,特别是在Matlab和Maxwell中的仿真过程。首先讨论了SS补偿拓扑的Matlab仿真,展示了如何设置线圈参数、进行谐振匹配以及通过相量分析判断软开关状态。接着探讨了Maxwell中DD线圈的3D电磁场仿真,强调了自定义网格划分和涡流场计算的重要性。随后,文章深入研究了多线圈阵列仿真,揭示了不同线圈布局对耦合系数的影响,并提出了LCC补偿拓扑的应用。此外,文中还分享了许多实用技巧,如避免常见错误、优化仿真参数以及处理实际测试中的问题。 适合人群:从事无线电能传输研究的技术人员、研究生及以上学历的研究人员。 使用场景及目标:适用于需要深入了解无线电能传输技术及其仿真的研究人员和技术开发者,旨在帮助他们掌握Matlab和Maxwell的具体应用,提高仿真精度和效率。 其他说明:文章不仅提供了详细的代码示例和仿真步骤,还分享了作者的实际经验和教训,使读者能够更好地理解和应对仿真过程中遇到的问题。
用户增删改查功能的前端页面,添加了vue渲染代码。
计算机课程设计相关资源
基于51单片机protues仿真的猜数字游戏(仿真图、源代码、AD原理图、流程图) 猜数字游戏 1、通过随机数实现该游戏; 2、按下K1键启动游戏并随机生成一个0~9的数字 3、通过矩阵按键输入你的数字,输入数字小于随机生成的数字则显示小于该数,大于的时候显示大于该数,直到相等为止。 4、仿真图、源代码、AD原理图、流程图;
内容概要:本文详细介绍了利用MATLAB 2021b搭建的FOC滑膜观测器(SMO)与锁相环(PLL)的仿真模型及其在M4硬件平台上的实现方法。文中首先展示了SMO的核心代码,解释了如何通过滑模面计算和符号函数处理来估算反电动势,并讨论了PLL用于速度提取的具体实现。接着探讨了仿真环境中直接0速闭环启动的效果以及实际硬件实现时所需的开环启动策略。此外,文章还分享了多个调试过程中遇到的问题及解决方案,如相位跳变、高频振荡、电流环参数调整等。 适合人群:从事电机控制研究的技术人员,尤其是对无感FOC感兴趣的工程师。 使用场景及目标:适用于希望深入了解FOC滑膜观测器和锁相环的工作原理并尝试将其应用于实际项目的开发者。目标是掌握SMO+PLL组合的设计思路和技术细节,同时了解硬件移植时需要注意的实际问题。 其他说明:文中提供了大量实用的代码片段和调试经验,对于想要快速入门或优化现有系统的读者非常有帮助。特别强调了仿真与现实之间的差异,提醒读者注意参数选择和滤波器设计等方面的不同之处。
汽车美容员工手册.doc
内容概要:本文详细介绍了利用粒子群优化(PSO)算法解决配电网中分布式光伏系统的选址与定容问题的方法。首先阐述了问题背景,即在复杂的配电网环境中选择合适的光伏安装位置和确定合理的装机容量,以降低网损、减小电压偏差并提高光伏消纳效率。接着展示了具体的PSO算法实现流程,包括粒子初始化、适应度函数构建、粒子位置更新规则以及越界处理机制等关键技术细节。文中还讨论了目标函数的设计思路,将多个相互制约的目标如网损、电压偏差和光伏消纳通过加权方式整合为单一评价标准。此外,作者分享了一些实践经验,例如采用前推回代法进行快速潮流计算,针对特定应用场景调整权重系数,以及引入随机波动模型模拟光伏出力特性。最终实验结果显示,经过优化后的方案能够显著提升系统的整体性能。 适用人群:从事电力系统规划与设计的专业人士,尤其是那些需要处理分布式能源集成问题的研究人员和技术人员。 使用场景及目标:适用于希望深入了解如何运用智能优化算法解决实际工程难题的人士;旨在帮助读者掌握PSO算法的具体应用方法,从而更好地应对配电网中分布式光伏系统的选址定容挑战。 其他说明:文中提供了完整的Matlab源代码片段,便于读者理解和复现研究结果;同时也提到了一些潜在改进方向,鼓励进一步探索和创新。
晋升考核制度.pptx
计网-主机发送IP数据报的过程思维导图
内容概要:本文详细介绍了三菱FX3U PLC与三台三菱E740变频器通过Modbus RTU协议进行通讯的具体实现方法。主要内容涵盖硬件配置(如PLC、变频器、触摸屏)、通讯参数设置(如波特率、数据位、校验方式)、PLC程序编写(包括初始化、启停控制、频率设定等)、触摸屏编程(如画面设计、变量关联)等方面。文中还分享了一些实际应用中的注意事项和避坑指南,确保通讯系统的稳定性和可靠性。 适用人群:从事工业自动化领域的工程师和技术人员,尤其是熟悉三菱产品和Modbus RTU协议的专业人士。 使用场景及目标:适用于需要实现PLC与多台变频器通讯的工业自动化项目,旨在提高系统的集成度和可控性,减少人工干预,提升生产效率。 其他说明:文中提供的实例和代码片段有助于读者快速理解和掌握相关技术要点,同时强调了实际操作中的常见问题及其解决方案。
内容概要:本文深入探讨了利用二/三自由度动力学模型和MPC(模型预测控制)实现自动驾驶车辆的任意路径跟踪技术。首先介绍了二自由度动力学模型的基本概念及其状态方程,随后详细解释了MPC的工作原理,包括目标函数的设计和优化求解过程。接着讨论了Carsim和Simulink联合仿真的具体实施步骤和技术要点,如采样同步、约束条件处理等。文中还分享了许多实用的工程经验和调试技巧,例如预瞄距离的设置、权重矩阵的选择以及如何应对高速工况下的挑战。最终通过仿真结果展示,证明了该方法的有效性和优越性。 适合人群:从事自动驾驶研究与开发的专业人士,尤其是对路径跟踪算法感兴趣的工程师和技术爱好者。 使用场景及目标:适用于需要精确路径跟踪的自动驾驶应用场景,旨在提高车辆行驶的安全性和效率。通过掌握本文介绍的方法和技术,可以帮助开发者更好地理解和实现基于MPC的路径跟踪系统。 其他说明:文章不仅提供了理论知识,还包括了大量的实战经验和代码片段,有助于读者快速上手并应用于实际项目中。同时强调了在不同速度范围选择合适自由度模型的重要性,为后续的研究和发展指明了方向。
内容概要:本文详细介绍了基于西门子S7-1200 PLC的智能灌溉系统的设计与实现。系统主要包括PLC控制器、触摸屏、传感器和执行机构。文中详细讲解了如何使用博途V16软件编写PLC程序,包括梯形图编程和SCL语言的应用,以及如何设计触摸屏监控画面。此外,还涉及了IO表和电气原理图的准备,确保系统的正确安装和维护。文章特别强调了自动灌溉的核心逻辑,如状态机结构和异常处理机制,以及触摸屏设计的小技巧,如动态图标和趋势图的使用。最后,提供了调试过程中的一些注意事项和优化建议。 适合人群:从事农业自动化领域的工程师和技术人员,尤其是熟悉PLC编程和触摸屏设计的专业人士。 使用场景及目标:适用于需要提高灌溉效率和精度的现代农业生产环境。目标是通过智能化控制减少水资源浪费,提升作物产量。同时,也为系统开发者提供了详细的实施指南和调试技巧。 其他说明:文章附带了完整的PLC程序、HMI界面和电气图纸,方便读者进行实际操作和验证。
国金qmt模拟客户端。 模拟账号密码,私聊。
员工离职面谈记录表.doc
新员工关怀方案
内容概要:本文详细介绍了轴承表面缺陷检测数据集的结构及其应用方法。数据集包含5824张高清轴承图像及其对应的XML标注文件,涵盖擦伤、凹槽、划痕三种类型的缺陷。作者通过Python代码展示了如何检查数据完整性、解析XML标注文件、进行数据可视化以及数据增强操作。此外,还讨论了使用YOLOv5和EfficientDet等模型进行缺陷检测的具体步骤和技术要点,强调了高分辨率图像处理和模型优化的方法。 适合人群:从事工业质检、机器视觉、深度学习等相关领域的研究人员和工程师。 使用场景及目标:适用于需要处理高分辨率工业图像并进行缺陷检测的研究和工程项目。主要目标是提高缺陷检测的准确性,特别是在复杂的工业环境中。 其他说明:文中提供了大量实用的Python代码片段,涵盖了从数据预处理到模型训练的各个环节。特别提到了针对金属表面反光、多缺陷共存等问题的技术解决方案。
招聘甘特图.xlsx
招聘仪表盘构建及为数据解读P11.pptx
内容概要:本文详细介绍了利用MATLAB进行光纤通信物理层传输算法仿真的方法和技术要点。主要内容涵盖色散补偿、非线性放大器建模、信号重构、时钟恢复、QPSK调制、误码率分析等方面。文中提供了多个具体的MATLAB代码示例,如色散补偿、非线性放大器特性拟合、QPSK调制与解调、眼图生成等,并分享了许多调试经验和常见问题解决方案。此外,作者还强调了仿真过程中需要注意的关键细节,如参数设置、变量监控、噪声注入方式等。 适合人群:从事光纤通信研究的技术人员、研究生以及对通信系统仿真感兴趣的开发者。 使用场景及目标:适用于希望深入了解光纤通信物理层传输机制及其仿真实现的研究人员和工程师。目标是帮助读者掌握MATLAB在通信仿真中的应用,提高仿真效率并减少调试时间。 其他说明:文章不仅提供详细的代码示例,还分享了大量实战经验,有助于读者快速上手并解决实际问题。