`

关于ActionScript的效率(转)

阅读更多

随着Flash的ActionScript功能的不断强大,使用Flash制作应用程序也越来越多了,但让众多AS程序员最头疼的就是Flash的程序处理效率太低,就算现在flashplayer7虽然效率比flashplayer6提高了2~8倍,但还是低的要命,尤其是在手持设备中就更加严重了(在PPC上现在Flash2004的所有组件都没法使用,需要自行开发),这样就让很多as程序员不断的研究比较action中哪个方法效率更高,哪条指令更快.甚至有些人只用while循环而不用for循环(因为很多测试表明while循环比for循环要快一点),但这种做法实际上没快多少确让程序读/写起来都要麻烦许多,其实真正提高程序的效率,不是比较类似while for循环哪个更快,而是要找到程序效率低的瓶颈

一段程序的效率,最关键的看算法,就算用最快的计算机语言(比如用c),如果算法不好,大部分执行时间都是被浪费掉了,而不是充分利用起来,那程序一样会很慢,而如果算法得当,可能解决问题根本就不用很大量的计算,因此即使使用效率很低的action一样能很快的解决(虽然action很慢,但每秒一样能循环循环几十万次,同样能在很短的时间内完成很多事情,所谓慢是比较更快的程序语言来说的)

在这里咱们不谈算法,单独从FlashPlayer上说,怎么才能提高action的效率呢?要提高效率就要抓住根本,抓住Flash为什么运行的慢,action执行效率低,最根本的原因是action是解释性语言,每句代码都需要flashplayer去解释执行,这就是action执行效率低的根本原因,那如果去提高action的效率呢?去比较哪句action的效率更高吗,所有的action都是player去解析的,肯定相差不大,那怎么办呢?当然就是尽量少使用action进行处理

大家都知道FlashPlayer是用c语言来写的,那flash里面的所有内置函数肯定都是使用c语言实现的(虽然flash执行action的速度比较慢,但flash的内置函数确实非常快的,比如flash下Math下面的方法都是效率很高的),那我们如果能把我们原来用action来处理的方法改用flash内部方法来处理就肯定要快多了

那怎么才能使用内置方法代替action呢,这个要看个人水平跟对Action的熟悉程度了,下面介绍一个例子,来解释一下:

action程序员都知道action处理String的效率是非常低的,可是说低的可以,下面代码可以说明:

var str = "abcde";
var tmp = "";
var time1 = getTimer();
for(var i=0;i < 10000;i++){
tmp += str;
}
trace(getTimer() - time1);//1665

将10000个5个字母的字符串连接起来竟然需要1.5s以上的时间(cpu: pm1.4)
而改成10个字母就需要使用4s左右的时间,15个字母就需要5.5s左右的时间
随着字符串的变长,字符串处理的速度越来越低

那怎么能让字符串连接的更快呢?看一看下面这段代码:

time1 = getTimer();
var tmpA = new Array();
for(var i=0;i < 10000;i++){
tmpA[i] = str;
}
var tmp1 = tmpA.join("");
trace(getTimer() - time1);
trace(tmp1 == tmp);

这段代码是接在上面的代码后面的,这里思路有所不同的是,在这里先把字符串一个一个的付给数组,然后利用数组的join方面一下子将整个数组转换为字符串,你也许会想,先付给数组,然后再有数组转换,肯定会更慢.但实际上不是这样的,因为赋值语句在as里面是很快的,所以将10000个字符串付给数组花不了多长时间,而最后调用的数组的方法是as内部函数,完全有c实现的,因此肯定要比as实现快很多倍,因此整体速度跟上面的代码就相差很多了,而且随字符串增长,效率也不会明显降低,下面是执行结果:

同样为10000个字符串连接,5个字符第二种方法只需要140ms,比直接连接字符串快10倍左右,而后面的比较输出true说明两个字符串是一样的
而且当字符串加置10个,15个甚至更多的时候,效率并没有降低,而仍然用时140ms左右,而当字符串长度达到40的时候,用时才超过了200ms关于ActionScript的效率(转)

分享到:
评论

相关推荐

    ActionScript

    10. **优化与调试**:了解性能优化技巧,如减少不必要的计算、使用位运算等,以及如何利用ActionScript的内置调试工具,可以帮助开发者提高代码质量和运行效率。 通过深入学习和实践这些ActionScript开发技术,你...

    actionscript3.0

    2. **在线课程**:如Udemy、Coursera等在线教育平台提供了许多关于ActionScript 3.0的课程。 3. **社区论坛**:加入相关技术论坛,如Stack Overflow,可以获得同行的帮助和支持。 4. **实践项目**:理论结合实践是...

    ActionScript 3 For Adobe Flash CS4 Professional

    本指南主要分为几个部分:导言、五大关于ActionScript 3的常见误区、五大ActionScript 3的优势以及迁移食谱。在导言部分,本指南为读者提供了一个关于ActionScript 3的快速入门介绍。接着在常见误区部分,它澄清了...

    actionscript_百度百科

    - **调试技巧**:为了确保代码的正确性和效率,开发者需要掌握一定的调试技巧,比如使用断点、查看变量值变化、监听事件响应等。 #### 五、ActionScript与其他技术的结合 - **与HTML5的融合**:虽然Flash在移动...

    ActionScript开发技术大全

    8. **性能优化**:提供优化ActionScript代码的技巧和策略,以提高应用程序的运行效率和用户体验。 9. **最佳实践**:分享开发ActionScript应用程序时的最佳实践,包括代码组织、命名规范以及项目管理。 通过...

    ActionScript语句中文全解

    2. Profiler:ActionScript提供性能分析工具,帮助优化代码执行效率。 通过《ActionScript语句中文全解》这份资料,你可以全面了解和掌握ActionScript的各个方面,无论是初学者还是有经验的开发者,都能从中受益。...

    ActionScript3.0cookbook中文版

    这种结构使得开发者能够快速查找并应用合适的代码片段,提高开发效率。 标签“ac3”指的是ActionScript3.0,“actionscript3 cookbook”强调了这本书的实践性,而“actionscript”则是对整个ActionScript语言的泛指...

    最专业的ActionScript 3.0

    自ActionScript 1.0和2.0以来,ActionScript 3.0经过不断的演进,成为了一个规范且功能丰富的语言,极大地提升了Flash和Flex开发的效率和性能。 **3.2 ActionScript 3.0语法基础** 学习ActionScript 3.0首先需要...

    Foundation ActionScript 3.0 Animation

    1. **基础语法与类库**:ActionScript 3.0引入了严格的类型系统,提高了代码的稳定性和效率。学习者需要理解基本数据类型、变量、函数、类和对象的概念,以及如何利用Flash Player或Adobe AIR的内置类库进行开发。 ...

    actionscript

    它在2006年随着Flash Player 9一同发布,带来了显著的性能提升、类型检查以及面向对象编程的支持,从而大大提升了开发者的效率和创建复杂交互式内容的能力。 ActionScript 3.0 的主要知识点包括: 1. **类型系统**...

    flex actionscript学习笔记

    Flex ActionScript 学习笔记是关于使用Adobe Flex技术并结合ActionScript 3.0进行开发的知识总结。ActionScript 3.0是随着Flash CS3一起推出的一种强大的编程语言,相较于之前的ActionScript版本,它有着显著的提升...

    ActionScript动作脚本字典

    Flex是一个开源的软件框架,主要用于构建桌面和移动设备上的高性能、高效率的Web应用程序。使用ActionScript进行Flex开发时,掌握本字典提供的词汇和概念将大有裨益。 #### 四、关键术语解释 在给定的部分内容中...

    ActionScript3中文手册

    这种改变提高了代码的稳定性和效率,但也对开发者的编程习惯提出了更高要求。 其次,面向对象编程(OOP)在AS3中占据了核心地位。类、对象、继承、封装和多态性是OOP的五大基本概念。AS3支持单一继承,但可以通过...

    ActionScript3.0 中文版

    在ActionScript3.0中文版的API说明文档中,我们可以找到关于该语言的详细信息,包括类库、接口、函数和方法的解释。以下是一些核心知识点: 1. 类和对象:AS3.0引入了严格的类定义和对象实例化,支持类继承、封装和...

    ActionScript3代码规范

    【ActionScript3代码规范】 ActionScript3是一种面向对象的编程语言,主要用于开发Adobe Flash...遵循这些规范,可以帮助开发人员编写出高效、易于理解的ActionScript3代码,从而提升团队协作效率并降低长期维护成本。

    flashdevelop+actionscript

    FlashDevelop提供了代码自动完成、项目管理、调试和编译等功能,极大地提高了开发效率。 ActionScript,是Adobe为Flash平台开发的编程语言,主要用于创建动态网页、游戏、应用程序和多媒体内容。它基于ECMAScript,...

    ActionScript 3.0 CookBook 中文翻译

    通过对《ActionScript 3.0 CookBook》中文版的深入学习和实践,开发者能够有效地提高工作效率,编写出高效、可维护的代码,从而在Flash和Flex开发领域取得更大的成就。无论你是初学者还是经验丰富的开发者,这本书都...

    actionScript 解析json开源包,比官方的好

    ActionScript是一种基于ECMAScript的...总之,选择一个优秀的JSON解析库可以显著提升ActionScript项目中处理JSON数据的效率和体验。通过阅读源码和相关博客,我们可以学习到最佳实践,并根据项目需求进行定制或优化。

Global site tag (gtag.js) - Google Analytics