因爲java中+=肯定沒有stringbuffer的append效率高,因爲+=相當與=?+?會額外創建對象,效率不好。於是測試下as3中+=和concat的效率,代碼如下:
其中爲了取消循環先後順序的影響,我也曾把concat和+=上下交換了下,不過結果是一致的
public class testzz extends Sprite
{
public function testzz()
{
var times:int = 10000000;
var teststr:String = "";
var a:int = getTimer();
for(var i:int =0;i < times; i++){
teststr.concat("a");
}
var b:int = getTimer();
trace("first:"+(b-a)+"ms");
teststr = "";
a = getTimer();
for(var i:int =0;i < times; i++){
teststr += "a";
}
b = getTimer();
trace("second:"+(b-a)+"ms");
}
}
最後輸出是這樣的
first:7743ms
second:2978ms
也就是說+=比concat效率要高,唉,看來as3中的+=還是很快的