
Код AS3:
function setUintType(value:String, index:int, array:Array):uint
{
return uint(value);
}
a = a.map(setUintType, null);
Добавлено через 11 минут
но это так же перебор элементов. Просто
упрощение сокращение записи. Можно свести до

Код AS3:
a = a.map(function(...v):uint{return v[0]}, null);
Добавлено через 1 час 5 минут
Провёл замеры.

Код AS3:
package
{
import flash.display.Sprite;
import flash.utils.getTimer;
import flash.utils.setTimeout;
public class w2 extends Sprite
{
private var a:Array;
private var t:int;
private var funcRoute:Array;
public function w2()
{
a = [];
var count:uint = 1000000;
while(--count) {
a.push( String( uint(Math.random()*1000) ) );
}
funcRoute = [ undefinedFunc, undefinedMultiFunc, externalFunction, internalfunction, forinFunction, foreachFunction];
nextstep();
}
private function undefinedFunc():void
{
start();
var b:Array = a.map
( function(value:String, index:int, array:Array):uint{ return uint(value); },
null
);
calc();
nextstep();
}
private function undefinedMultiFunc():void
{
start();
var b:Array = a.map(function(...v):uint{return v[0]}, null);
calc();
nextstep();
}
private function externalFunction():void {
start();
var b:Array = a.map(setUintType, null);
calc();
nextstep();
}
private function internalfunction():void
{
start();
function internalfunc(value:String, index:int, array:Array):uint
{
return uint(value);
}
var b:Array = a.map(internalfunc, null);
calc();
nextstep();
}
private function forinFunction():void
{
var b:Array = [];
start();
for(var i:uint=0; i<a.length; i++) {
b.push(uint(a[i]));
}
calc();
nextstep();
}
private function foreachFunction():void
{
var b:Array = [];
start();
for each(var v:String in a){
b.push( uint(v) );
}
calc();
nextstep();
}
private function calc():void
{
var timeoffset:uint = getTimer()-t;
var err:Object;
try {
err.call();
} catch (e:*) {
var msg:String = e.getStackTrace();
var arr:Array = msg.split('/');
var caller:Array = arr[2].split('(');
var functname:String = caller[0];
}
trace(functname+" -> "+ timeoffset);
}
private function start():void
{
t = getTimer();
}
private function setUintType(value:String, index:int, array:Array):uint
{
return uint(value);
}
private function nextstep():void
{
if (funcRoute.length) {
setTimeout( funcRoute.shift(), 3000);
}
}
}
}
Цитата:
undefinedFunc -> 392
undefinedMultiFunc -> 855
externalFunction -> 369
internalfunction -> 382
forinFunction -> 419
foreachFunction -> 257
|
наиболее продуктивным будет вариант

Код AS3:
var b:Array = [];
for each(var v:String in a){
b.push( uint(v) );
}
a = b;