提升as3程序性能的十大要点

开发 前端 后端
新的一年到来了,是时候为flash的性能制定新的解决方案了。今天的文章收集了我认为可以提升flash程序性能的十大要点。继续往下读吧。

[[55325]]

新的一年到来了,是时候为flash的性能制定新的解决方案了。今天的文章收集了我认为可以提升flash程序性能的十大要点。继续往下读吧。

1.使用flash的源生代码代替as3

一般情况下,使用flash player的原生代码做一些大负荷的工作要比使用as3去做好的多。因为和调用flash player api(flash包里面的所有东西)里面的方法相比,在vm(虚拟机)里运行你自己的as3代码势必会带来一些间接成本。不适用这个规则的例外是,api有时会做你不想做的事情,比如分配内存

2.减少内存分配以降低gc

除了你预料到的内存分配,比如通过使用某个新的操作触发某个事件,还有很多隐藏的分配,比如关联的字符串对象、flash player自己创建的对象,如事件。这些分配很慢,使用完了回收他们更慢,所以试着去掉这样的分配。

3.减少对象的数目以降低gc

使用完的对象,flash player的垃圾回器会回收他们的内存来重新使用。不幸的是,这个过程是非常缓慢的而且我们不能控制它什么时候执行。所以,尽量重用已经存在的对象而减少使用new来声明新的对象。对这方面有帮助的一个技术是free lists。

4.不要使用任何动态的东西

这包括动态的函数(如无特征的函数和被声明为局部变量的函数),如Object和MovieClip这样的对象,用”[]“操作符访问字段、无类型的变量。这些都比使用相应的静态量(如正规的函数、非动态类、”.”运算符、有类型的变量)要慢的多。

5.把更多的事情交给gpu

现在在flash里面(fp11)我们除了可以使用cpu外,还可以使用显卡的gpu。二者的组合使用是完成高性能3D图像处理(Stage3D)和高清视频(StageVideo)播放的关键。

6.减少函数的调用

非常不幸的是,函数调用在as3里面是非常慢的。这包括总在使用的getter和setter方法(如调用数组的长度Array.length)。尝试用缓存函数的执行结果来代替多次的函数调用,尤其是用getter的时候。在极个别情况下,手动地把一个小的函数体合并到一个更大的函数里面。

7.使用专用的函数或者类,而不是通用的

Sprite比MovieClip省内存,Shape比Sprite省内存,BitmapData的copyPixels方法比draw方法更快。

8.尽量少的使用静态访问

访问静态变量、常量和函数比访问非静态的要慢很多。尽量使用非静态方案或者把静态访问缓存为非静态变量、常量或者局部的变量、常量。

9.局部变量比字段(原文为文fields,译者认为就是所谓的成员变量)更好

读取类变量和对象变量(又叫字段,成员变量)比访问局部变量要慢地多。如果你频繁的使用某个字段访问,那么***把它缓存为局部变量。

10.清除无意义的代码

经常见到一些变量被初始化为该类型的默认值,这会减缓对象的创造时间和函数的执行时间。作为一个好的习惯,清除那些无用代码,你的整个程序的性能将会提升。

原文:http://www.wefdc.com/?p=2395

【编辑推荐】

  1. Swiffy变身Flash插件,可将SWF转为HTML
  2. 从HTML 5和Flash之争看开发者社区
  3. 解读Adobe对于HTML 5和Flash未来战略
  4. 10个让你忘记Flash的HTML 5应用演示
  5. Flash:涅磐与重生
责任编辑:陈贻新 来源: Mhycoe
相关推荐

2013-02-20 13:37:54

Android开发性能

2009-01-20 10:27:00

2015-01-29 09:11:37

OpenStack云应用云部署

2011-12-01 09:00:12

Android提升开发性能要点

2016-10-19 13:47:41

大数据存储Hadoop

2009-02-17 09:50:25

2011-09-16 14:03:18

2016-10-24 10:07:40

私有云云计算

2015-05-18 08:47:54

2015-11-10 09:50:22

2017-10-31 12:45:55

程序员学习语言

2009-11-20 09:15:14

谷歌Chrome OS十大要点

2018-11-06 09:53:27

2016-12-12 15:19:44

云计算公有云应用上云

2012-04-05 10:00:15

2022-11-25 10:19:30

数据中心

2009-06-29 19:13:54

VMware ESX虚拟化虚拟机

2023-10-16 20:46:57

ChatGPT

2024-04-18 11:07:30

C++语言

2019-02-01 09:50:00

提升Python程序性能
点赞
收藏

51CTO技术栈公众号