续
从上一篇文章可以看出使用 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 的格式。因为预载入文本一般为每一帧执行一次,所以说一般不会遇到效率的瓶颈。