Код AS3:
var t:int = getTimer();
for (var i:uint = 0; i< 100000; i++) {
TestEtc();
}
trace(getTimer()-t);//1378
var t2:int = getTimer();
for (var i2:uint = 0; i2< 100000; i2++) {
TestKseniya();
}
trace(getTimer()-t2);//1176
function TestEtc() {
var arr:Array = new Array();
arr.push({name:"one", manager:true});
arr.push({name:"tru", manager:true});
arr.push({name:"fri", manager:false});
arr.push({name:"one", manager:true});
arr.push({name:"tru", manager:true});
arr.push({name:"fri", manager:true});
var dict:Object = new Object();
for (var i:uint = 0; i<arr.length; i++) {
var hash:String = getHash(arr[i]);
if (hash in dict) {
arr.splice(i--, 1);
}
dict[hash] = true;
}
dict = null;
}
function TestKseniya() {
var arr:Array = new Array();
arr.push({name:"one", manager:true});
arr.push({name:"tru", manager:true});
arr.push({name:"fri", manager:false});
arr.push({name:"one", manager:true});
arr.push({name:"tru", manager:true});
arr.push({name:"fri", manager:true});
arr = sortO(arr,0,0,arr.length);
}
function getHash(obj:Object):String {
return obj.name + (obj.manager ? '1' : '0');
}
function traceEmployee(element:*, index:int, arr:Array):void {
trace("\t" + element.name + ((element.manager) ? " (manager)" : ""));
}
function sortO(arrr:Array, i1:uint, i2:uint, len:uint):Array {
if (i1 < len) {
if (i2 < len) {
var len2:uint = len;
if (i1 != i2 && arrr[i1]["name"] == arrr[i2]["name"] && arrr[i1]["manager"] == arrr[i2]["manager"]) {
len2--;
arrr.splice(i2, 1);
}
sortO(arrr, i1, i2+1, len2);
} else {
sortO(arrr, i1+1, 0, len);
}
}
return arrr;
}