提升as3程序性能的十大要点
新的一年到来了,是时候为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
【编辑推荐】
相关文章
- 金融服务领域的大数据:即时分析
- 影响大数据、机器学习和人工智能未来发展的8个因素
- 从0开始构建一个属于你自己的PHP框架
- 如何将Hadoop集成到工作流程中?这6个优秀实践必看
- SEO公司使用大数据优化其模型的5种方法
- 关于Web Workers你需要了解的七件事
- 深入理解HTTPS原理、过程与实践
- 增强分析:数据和分析的未来
- PHP协程实现过程详解
- AI专家:大数据知识图谱——实战经验总结
- 关于PHP的错误机制总结
- 利用数据分析量化协同过滤算法的两大常见难题
- 怎么做大数据工作流调度系统?大厂架构师一语点破!
- 2019大数据处理必备的十大工具,从Linux到架构师必修
- OpenCV中的KMeans算法介绍与应用
- 教大家如果搭建一套phpstorm+wamp+xdebug调试PHP的环境
- CentOS下三种PHP拓展安装方法
- Go语言HTTP Server源码分析
- Go语言HTTP Server源码分析
- 2017年4月编程语言排行榜:Hack首次进入前五十