标签:
Topic:有一个Array的实例arrS,其元素可能为String,Number或Array,将arrS深拷贝。
方法1:通过传说中的“AS3隐藏特性——ByteArray.writeObject和readObject”进行操作,代码如下:
var arrA:Array = [1, 2, 5];
var arrS:Array = [5, arrA, 9, 10];
var arrClone:Array;
var nT:int = getTimer();
var bta:ByteArray = new ByteArray();
for (var i:int = 0; i < 100000; i++)
{
bta.length = 0;
bta.writeObject(arrS);
bta.position = 0;
arrClone = bta.readObject();
}
trace(getTimer() - nT);
执行时间:average(452,447,460,456,464)=456ms
方法2:通过工具类进行拷贝,工具类代码如下:
public class ArrayUtil
{
/**
*/
public static function deepClone(arrS:Array):Array
{
var arrResult:Array = [];
for each (var i:* in arrS)
{
if ( i is Array )
{
arrResult.push(deepClone(i));
}
else
{
arrResult.push(i);
}
}
return arrResult;
}
}
具体使用代码如下:
var arrA:Array = [1, 2, 5];
var arrS:Array = [5, arrA, 9, 10];
var arrClone:Array;
var nT:int = getTimer();
for (var i:int = 0; i < 100000; i++)
{
arrClone = ArrayUtil.deepClone(arrS);
}
trace(getTimer() - nT);
执行时间:average(280,272,270,271,271)=273ms
标签:
原文地址:http://www.cnblogs.com/andytang555/p/4722323.html