Цитата:
Сообщение от Партизан
Может я тоже чего не понимаю?
Но как-то не вижу я преимуществ у obj.win.id[0].parameters.title.lang['ru'] и xml..lang.(@name=='ru')?
|
Это как раз одно из тех неявных заблуждений, о которых я говорил. В случае с XMLем имеем перебор и фильтрацию всех потомков узла xml с именем lang и потом еще эту выбранную группу фильтруем по id можно сказать, что в худшем случае получаем O(n^2), в то время как в случае с объектом имеем обычный доступ по имени, который фактически O(1).
Цитата:
Сообщение от Nooob
доступ к свойствам объекта быстрее чем к xml
даже такая ересь как:
 Код AS3:
var s:String = (function(list:XMLList):XML
{
for each (var node:XML in list)
{
if (node.@id == 'ru')
{
return node;
}
}
return null;
})(xml.languages.item).@flag;
работает быстрее, чем:
 Код AS3:
var s:String = xml.languages.item.(@id == "ru").@flag;
в целом я за строгую типизацию объектов, languages = Vector.<Item>, item = Item, id = Item.#id, flag = Item.#flag и за хранение локализации в отдельных друг от друга xml файлах с одинаковой структурой
|
Это потому, что в сгенерированном коде для "обычного" выражения внутри фильтра вместо того, чтобы просматривать только свойства текущего выбранного узла просматриваются все свойства доступные в текущем окружении (которое включает в себя узел). А еще и потому, что "обычный" код создает список, а вы возвращаете только один из элементов - т.е. код не делает одно и то же.
Но как я уже говорил, пытаться использовать XML в местах критичных к скорости - заниматься ерундой, т.как для каждой задачи существуют лучшие и худшие структуры данных, которые будут работать лучше любого универсального хранилища данных, а XML - даже на универсальное хранилище не потянет (т.е. в сравнении с SQL базами данных, например).