![]() |
|
||||||||||
|
|||||
|
Регистрация: Nov 2005
Сообщений: 73
|
Доброго дня.
Получаю данные в ХМЛ в виде <data> <p id='1' name=''/> <p id='1' name=''/> ... <p id='20000'/></data> Прохожу по циклу это ХМЛ и присваиваю атрибутам значения. Так вот этот обход на 11тыс строк занимает 18с !!! Есть ли какие-то альтернативные методы, как работать с большими данными ? |
|
|||||
|
Регистрация: Nov 2005
Сообщений: 73
|
Вот код
xml_all = new XML(str_xml); // замеряю тут for each(var child:XML in xml_all..*) { child.@name= "XXX"; child.@date= "YYY"; } // замеряю тут ИЛИ так еще дольше |
|
|||||
|
[+4 06.05.14]
|
for(var i:int = 0; i < xml.children().length(); i++) { xml.p[i].@name = "XXX"; xml.p[i].@date = "YYY"; } Добавлено через 3 минуты Даже если будет идти такая долгая перетрубация, я так понимаю это идет в ините приложения, то есть пока оно не отрботает - приложением пользоваться не получится. В связи с этим можно сделать так. tf.text = "Загрузка данных"; for(...) tf.text = "ok"; Ну или экран повесить какой то, или прелоадер пустить красивый. Вообщем это не страшно, а вот если во время исполнения приложения такие фентифлюшки , то лучше разбивать XML на уровни, и брать нужный ТОГДА, когда это потребуется
__________________
Марк Tween |
|
|||||
|
[+1 25.10.13]
[+4 18.03.14] |
Что ж там в этих 11 тысячах строк и для чего XML как не структуирования?
|
|
|||||
|
Регистрация: Nov 2005
Сообщений: 73
|
Еще дольше 18с
Добавлено через 1 минуту В нем список данных одноуровневый для датагрида |
|
|||||
|
[+1 25.10.13]
[+4 18.03.14] |
дата грид не умирает? 18 сек это по божески
![]() Добавлено через 36 секунд и сервера у вас конечно нет в кустах? |
|
|||||
|
Первая оптимизация - вынести длину в переменную, здесь прирост скорости будет в разы. Ну и самих детей сразу хмллист вынести, тут не уверен.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
|
Регистрация: Apr 2013
Сообщений: 77
|
Да, GBee вещь говорит. Хоть у Вас и не такие большие значения, но вот примерная разница:
private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point var someString:String = "just test!"; var lengthSomeString:int = someString.length; var secondTime:Number = 0; var firstTime:Number = (new Date()).getTime(); var testValueLength:int; var i:int = 0; for (i; i < 100000000; i++) { testValueLength = someString.length; } firstTime = (new Date()).getTime() - firstTime; trace(firstTime + "= с обращением к свойству строки при каждой иттерации цикла."); secondTime = (new Date()).getTime(); for (i = 0; i < 100000000; i++) { testValueLength = lengthSomeString; } secondTime = (new Date()).getTime() - secondTime; trace(secondTime + "= с обращением к ссылке на свойство строки при каждой иттерации цикла."); } } 9564= с обращением к ссылке на свойство строки при каждой итерации цикла. |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:47. |
|
|
« Предыдущая тема | Следующая тема » |
|
|