Показать сообщение отдельно
Старый 28.08.2008, 20:47
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 8  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
все переменные определим заранее, для чистоты эксперимента.
Код:
var xml:XML = <xml><x /><x /><x /></xml>;

var t:Number;
var i:uint;
var j:uint;

var l:uint;

var test:XML;
var list:XMLList;

t = getTimer();
for ( i=0; i<1E5; i++ ) {
	l = xml.elements("*").length();
	for ( j=0; j<l; j++ ) {
		test = XML( xml.elements("*")[j] );
	}
}
trace( "elements + XML = ", getTimer() - t );

t = getTimer();
for ( i=0; i<1E5; i++ ) {
	// заменим elements("*") просто на *.
	// теже яйца, только вид сбоку
	l = xml.*.length();
	for ( j=0; j<l; j++ ) {
		test = XML( xml.*[j] );
	}
}
trace( "* + XML = ", getTimer() - t );


t = getTimer();
for ( i=0; i<1E5; i++ ) {
	l = xml.*.length();
	for ( j=0; j<l; j++ ) {
		// уберём XML. зачем из XML создавать новый XML не понятно
		// если бы ла нужна конвертация, то надо было использовать оператор as.
		// но тут она незачем, так как это E4X
		test = xml.*[j];
	}
}
trace( "* = ", getTimer() - t );

t = getTimer();
for ( i=0; i<1E5; i++ ) {
	// вынесем наш спиок зарание в начало
	list = xml.*;
	l = list.length();
	for ( j=0; j<l; j++ ) {
		test = list[j];
	}
}

trace( "* + list = ", getTimer() - t );

t = getTimer();
for ( i=0; i<1E5; i++ ) {
	// поиграемся в for each
	for each ( test in xml.* ) {
		// собственно тут всё ...
	}
}

trace( "for each = ", getTimer() - t );

t = getTimer();
for ( i=0; i<1E5; i++ ) {
	list = xml.*;
	for each ( test in list ) {
		// собственно тут всё ...
	}
}

trace( "for each + list = ", getTimer() - t );
получили, что 3 самый быстрых варианта, практических равных по скорости:
* + list
for each
for each

разница в пару миллисекунд на тысяче итераций, можно опустить.

итог: тоесть, да, Вы не умеете работать с XML.