优化 ActionScript 性能

本文提供了多种优化ActionScript性能的方法,包括简化ActionScript、避免深层嵌套函数、减少全局变量使用等,特别适合移动设备上的Flash Lite应用。

博客分类: Flex
ActionScriptFlashAdobe
原文地址http://livedocs.adobe.com/flashlite/2_cn/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00000089.html

留下日后慢慢看。


由于大多数移动设备在处理速度和内存方面都有一定的限制性,因此在开发适用于移动电话中使用的 Flash Lite 内容的 ActionScript 时,请遵循以下原则:

使 ActionScript 尽量简单。
限制使用的循环数和每个循环包含的代码数。
当不再需要基于帧的循环时,应当立即停止该循环。
尽量避免字符串和数组处理,因为这对 CPU 的消耗很大。
始终尝试直接访问属性,而不要使用 ActionScript getter 和 setter 方法,因为与其它方法调用相比,这两种方法需要更高的开销。
巧妙并更为具体地管理事件。在调用侦听器之前利用一些条件来检查侦听器是否存在(不为 null),以此来使事件侦听器数组更加简洁。
不再需要变量时,请删除变量或将变量设置为 null。这样做可以标记数据,以便进行垃圾回收。删除变量有助于在运行期间优化内存使用情况,因为从 SWF 文件中删除了不需要的资源。删除变量比将变量设置为 null 更好。
有关垃圾回收和内存管理技术的更多信息,请参见管理应用程序的内存。

在进行垃圾回收前,通过调用 removeListener() 从对象中显式删除侦听器。
如果动态调用函数并传递固定的一组参数,则请使用 call(),而不要使用 apply()。
尽量使命名空间(如路径)简短以节省启动时间。包中的每个级别均会被编译为一个 IF 语句,并导致一个新的 Object() 调用,因此路径中的级别较少可以节省时间。
例如,具有 com.xxx.yyy.aaa.bbb.ccc.functionName() 级别的路径会使一个对象针对 com、xxx、yyy、aaa、bbb 和 ccc 被实例化。有些 Flash 开发人员使用预处理器软件,在编译 SWF 之前,将路径简化为一个唯一标识符,如 58923409876.functionName()。

如果应用程序由多个使用相同 ActionScript 类的 SWF 文件组成,则可以在编译过程中从选择的 SWF 文件中排除这些类。这样有助于缩短应用程序的下载时间和降低运行时内存要求。有关更多信息,请参见从编译过程中排除类。
避免使用 Object.watch() 和 Object.unwatch(),因为对象属性的每次更改都要求播放器确定是否必须发送更改通知。
如果在时间轴中的关键帧上执行的 ActionScript 代码需要 1 秒以上方可完成,则应考虑分割该代码,使其在多个关键帧上执行。
在发布 SWF 文件时从代码中删除 trace() 语句。为此,在"发布设置"对话框的"Flash"选项卡上,选择"省略跟踪动作"复选框。
继承会增加方法调用的数量,而且会使用更多的内存:包括所需全部功能的类在运行时要比从超类继承某些功能的类更加有效。因此,您可能需要在类的扩展性和代码有效性间做出一定的设计取舍。
当一个 SWF 文件加载另一个包含自定义 ActionScript 类(例如 foo.bar.CustomClass)的 SWF 文件,然后再卸载该 SWF 文件时,该类定义仍将保留在内存中。为了节省内存,应显式删除已卸载 SWF 文件中的所有自定义类。可以使用 delete 语句,然后指定完全限定类名,如下面的示例所示:delete foo.bar.CustomClass

限制全局变量的使用,因为如果删除了定义全局变量的影片剪辑,这些全局变量就不会被垃圾回收。
避免使用标准用户界面组件(在 Flash Professional 8 的"组件"面板中提供)。这些组件设计用于在桌面计算机上运行,并未针对在移动设备上运行而优化。
尽量避免深层嵌套函数。
避免引用不存在的变量、对象或函数。与桌面版本的 Flash Player 相比,Flash Lite 2.0 在查找对不存在的变量的引用时速度非常缓慢,这会显著影响应用程序的性能。

最近总结了一部分优化actionscript性能的小经验,跟大家分享一下:
1. 使用照片的时候将cacheAsBitmap属性设置为true,如果你不经常更新或重新渲染改图片的话。
2.尽量少使用
ENTER_FRAME 事件以减少不必要的开销。
3.不用的listener 就尽量及时remove掉。
4.不用的变量要及时设置为null。
5.创建数组
  var a = [] ;
  不要
  var a = new Array();
6.要使用强制类型转换
  var a:Array = [];
7.复制数组的最快方法

  var copy : Array = sourceArray. concat();
8.给数组元素赋值的方法
  employees[2] = employee;
  不要
 
employees. push( employee );
9.从数组取值的方法
  var employee : Employee = employees[2];
10.用静态方法避免创建一个新的对象从而产生不必要的开销。
StringUtils.trim( "text with space at end " ); 
Class definition: 
package {
 public final class StringUtils 
{ 
     public static function trim( s : String ) : String 
     { 
           var trimmed : String; // implementation...  return trimmed;
      } 
  }
}
 11.整个生命周期都不会发生变化的变量,要使用const
 public const APPLICATION_PUBLISHER : String = "Company, Inc.";
 12.if 和switch 使用起来在性能上没有区别
 
13.在flash9和flash10中,要使用int uint要比Number 速度快。
14在for循环中使用int ,不要使用Number
  正确
    for( var i: int = 0; i < n; i++)
  不要
   for ( var i: Number = 0; i < n; i++)
15.乘法和除法
  5000*0.001  速度比 5000/1000 快。
16.在循环中减少计算和静态变量的访问
      var len : int = myArray.lengh;
      for ( var i=0;i<len;i++){}
  错误
    for ( var i=0;i< myArray.lengh;i++){ }
17.不要无限制创建新对象,尽量使用对象池,重复使用对象。
18.选择使用ENTER_FRAME,不选择Timer。
   public function onEnterFrame( event : Event ) : void { }
    private function init() : void    
   
      addEventListener( Event.ENTER_FRAME, onEnterFrame );
   
}
    不要
public function onTimerTick( event : Event ) : void { } 
    private function init() : void 
    { 
        var timer : Timer = new Timer(); timer.start(); 
        timer.addEventListener( TimerEvent.TIMER, onTimerTick );
    }
 19 alph = 0和visible = false 不一样
visible = false
不要
alph = 0

 

 

【电力系统】单机无穷大电力系统短路故障暂态稳定Simulink仿真(带说明文档)内容概要:本文档围绕“单机无穷大电力系统短路故障暂态稳定Simulink仿真”展开,提供了完整的仿真模型与说明文档,重点研究电力系统在发生短路故障后的暂态稳定性问题。通过Simulink搭建单机无穷大系统模型,模拟不同类型的短路故障(如三相短路),分析系统在故障期间及切除后的动态响应,包括发电机转子角度、转速、电压和功率等关键参数的变化,进而评估系统的暂态稳定能力。该仿真有助于理解电力系统稳定性机理,掌握暂态过程分析方法。; 适合人群:电气工程及相关专业的本科生、研究生,以及从事电力系统分析、运行与控制工作的科研人员和工程师。; 使用场景及目标:①学习电力系统暂态稳定的基本概念与分析方法;②掌握利用Simulink进行电力系统建模与仿真的技能;③研究短路故障对系统稳定性的影响及提高稳定性的措施(如故障清除时间优化);④辅助课程设计、毕业设计或科研项目中的系统仿真验证。; 阅读建议:建议结合电力系统稳定性理论知识进行学习,先理解仿真模型各模块的功能与参数设置,再运行仿真并仔细分析输出结果,尝试改变故障类型或系统参数以观察其对稳定性的影响,从而深化对暂态稳定问题的理解。
本研究聚焦于运用MATLAB平台,将支持向量机(SVM)应用于数据预测任务,并引入粒子群优化(PSO)算法对模型的关键参数进行自动调优。该研究属于机器学习领域的典型实践,其核心在于利用SVM构建分类模型,同时借助PSO的全局搜索能力,高效确定SVM的最优超参数配置,从而显著增强模型的整体预测效能。 支持向量机作为一种经典的监督学习方法,其基本原理是通过在高维特征空间中构造一个具有最大间隔的决策边界,以实现对样本数据的分类或回归分析。该算法擅长处理小规模样本集、非线性关系以及高维度特征识别问题,其有效性源于通过核函数将原始数据映射至更高维的空间,使得原本复杂的分类问题变得线性可分。 粒子群优化算法是一种模拟鸟群社会行为的群体智能优化技术。在该算法框架下,每个潜在解被视作一个“粒子”,粒子群在解空间中协同搜索,通过不断迭代更新自身速度与位置,并参考个体历史最优解和群体全局最优解的信息,逐步逼近问题的最优解。在本应用中,PSO被专门用于搜寻SVM中影响模型性能的两个关键参数——正则化参数C与核函数参数γ的最优组合。 项目所提供的实现代码涵盖了从数据加载、预处理(如标准化处理)、基础SVM模型构建到PSO优化流程的完整步骤。优化过程会针对不同的核函数(例如线性核、多项式核及径向基函数核等)进行参数寻优,并系统评估优化前后模型性能的差异。性能对比通常基于准确率、精确率、召回率及F1分数等多项分类指标展开,从而定量验证PSO算法在提升SVM模型分类能力方面的实际效果。 本研究通过一个具体的MATLAB实现案例,旨在演示如何将全局优化算法与机器学习模型相结合,以解决模型参数选择这一关键问题。通过此实践,研究者不仅能够深入理解SVM的工作原理,还能掌握利用智能优化技术提升模型泛化性能的有效方法,这对于机器学习在实际问题中的应用具有重要的参考价值。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值