skip to main |skip to sidebar

2008-06-22

[AS3]详解E4X的变量展开(3)——效率与实用性

从上一篇文章可以看出使用 E4X 变量展开要慢于 new String。因为 E4X 是先把字符串转换为 XML(XMLList) 再转换为字符串。在解析字符串时开销很大。下面是测试的结果:

方式
第1次
第2次
第3次
第4次
第5次
平均
E4X 变量展开
1008
1490
959
1037
959
1091
new String
135
110
125
111
117
120

(E4X 变量展开的代码为:<>abc{1+2}def</>.toString(),new String 的代码为:"abc" + (1+2) + "def";循环次数为10000次;单位:ms。)

由此可见 E4X 变量展开的效率要差一些,但不在大量的循环里的时候差别不是很明显。因为这里的差别是循环 10000 次的结果,执行一次的差别仅仅为 0.097(ms),是可以忽略不计的。因此 E4X 变量展开还是很有用的。

比如说以下代码(预载入文本):

E4X 变量展开的格式:

e4xStr(<>Loading... {loaded}K/{total}K ({loaded/total*100}%)</>)
//e4xStr 为
function e4xStr(e4x:XMLList):String {
  return e4x.toString();
}

new String 的格式:

"Loading... " + loaded + "K/" + total + "K (" + (loaded/total*100) + "%)"

由此可见 E4X 变量展开的可读性要大大高于new String 的格式。因为预载入文本一般为每一帧执行一次,所以说一般不会遇到效率的瓶颈。

没有评论: