skip to main |skip to sidebar

2007-07-08

AS3.0的动态语言特性(3) - AS3.0的变量声明与效率

  1. AS3.0的动态语言特性(1) - 类型检查
  2. AS3.0的动态语言特性(2) - 变量声明的省略

变量声明有无和效率

首先创造一个 Date 对象,在调用 getTime() 10万次。

  • 变量没有明确声明:
date = new Date();
for (i=0; i<100000; i++)
   date.getTime()

执行大约用了470ms。

  • 变量明确声明:
date = new Date()
var dateVar = date  // 添加
for (i=0; i<100000; i++)
  dateVar.getTime()

执行大约用了340ms。快了38%

因为用var声明的为本地变量,所以能快速访问。

但不用var声明的为全局变量,访问速度较慢。

类型声明有无和效率

指定类型:

date = new Date()
var dateTyped:Date = date  // 指定类型
for (i=0; i<100000; i++)
  dateTyped.getTime()
 

执行大约用了300ms。比前面的340ms快了13%,比470ms快了56%

这是因为AS3.0支持类型(对dynamic的类用prototype添加的函数无效)。

变量声明的总结

如果把i也用var声明的话:

date = new Date()
var dateTyped:Date = date
for (var i=0; i<100000; i++)  // i也用var声明
 dateTyped.getTime()

执行大约用了20ms!比300ms快了1400%,比470ms快了2250%

再给i添加上类型:

date = new Date()
var dateTyped:Date = date
for (var i:int=0; i<100000; i++)  // 把i声明成int型
 dateTyped.getTime()

执行大约用了13ms。比20ms快了35%,300ms快了2208%,比470ms快了3515%

这是因为i调用了两次。

所以写代码最好:

  • 加上var
  • 加上类型

没有评论: