Показать сообщение отдельно
Старый 14.09.2015, 20:17
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 1  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Код 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;
__________________
return this...


Последний раз редактировалось AlexCooper; 14.09.2015 в 20:41.