Actionscript优化教程 高级优化1 |
| 作者:佚名 来源:闪吧 作者: Marco Lapi,alias Lap 更新:2007-1-13 20:48:02 错误报告 我要投稿 |
|
下面将给出用来检查在游戏中常用的典型代码的基准的清单。
为了给出这个清单,我们搜集了一些已有的关于Actionscript优化的权威资源,基于他们的建议进行过测试,并且也在实验中引入了其他思想。
这些基准是建立在如下两种不同配置的机器之上的:
|
Desktop AthlonXP 2.6Ghz (VIA KT-400 chipset)
512mb RAM
Windows 2000pro
|
Notebook P4 2.0Ghz (Intel i845 chipset)
512mb RAM
Windows XP Home edition
|
每条基准运行3次,最终结果是这3次测试的平均值。
结果以毫秒计,代表每次测试的执行时间,因此值越低效果越好。
第一套测试使用Flash Player 6运行,所有的基准源文件使用Flash MX 2004编译并输出为Flash Player 6版本。我们将非常有趣的看到新版本的编译器是如何优化Actionscript代码以及与Flash MX版本编译器的区别。
这些基准的测试结果列在表格里面,可以下载它的PDF格式。
|
AS Benchmarks
compiled with Flash MX - for flash player 6
http://www.gotoandplay.it/_articles/2004/01/as_benchmarks_mx.pdf
|
——
|
AS Benchmarks
compiled with Flash MX 2004 - for flash player 6
http://www.gotoandplay.it/_articles/2004/01/as_benchmarks_mx2004.pdf
|
基准:
下面是所有测试的一个清单和个人对结果的评论。
详细结果请参阅PDF文档。
1)附加影片剪辑:for循环VS. while循环

游戏中当向一个目标影片附加影片剪辑时采用的典型循环结构。
使用while循环而不是for循环可以获得更好的性能,如果经常需要从数组中读取数据(下一条基准即是如此),for…in循环是最好的选择。
因此:
|
for (var i = 0; i<1000; i++) {
// code here
}
|
应该换成:
|
var i = -1;
while (++i<1000) {
// code here
}
|
2)从数组读取数据(for、for…in、while)

这里我们比较使用这3种循环结构从数组中读取数据,for…in绝对是最好的方式。
|
arr = [];
MAX = 5000;
// Fill an array
for (i=0; i<MAX; i++) {
arr[i] = i;
}
var item = null;
// For Loop
for (var i = 0; i<MAX; i++) {
item = arr[i];
}
// For In Loop
for (var i in arr) {
item = arr[i];
}
// While Loop
i = -1;
while (++i<MAX) {
item = arr[i];
}
|
3)向数组写入数据(for、while)

向数组写入数据的过程也表明while循环性能更好,尽管这次区别不是很明显。
4)_global变量vs.时间轴变量
在这个测试中我们检查使用_global变量是否可以加快变量的访问速度,我们记录到一些额外的表现,但是速度的增加并不明显
|
|
| 文章录入:skyuu 责任编辑:skyuu |
|
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |