![]() |
огромный XML и default timeout period of 15 seconds
Вот засада! У меня xml (не мой) имеет в себе 3564 item`ов, Загрузив всё это дело во flash, и попытавшись просто прогнать их в цикле:
Код:
for(var z:int=0;z<fondsXML.elements('*').length();z++){}Цитата:
|
эт такая защита флеша от повисания)
очевидно что твой цикл работает слишком долго. и немного смущает .length() понится это свойство а ни метод. хотя может я не прав |
дада, из-за length() вся проблема и возникла.
решилось так: Код:
var len=fondsXML.elements('*').length(); |
нитуттобыло. любой вызов методов в этом цикле вешает скрипт наглухо.
Даже такой: Код:
var len=fondsXML.elements('*').length(); |
а вы умеете работать с ХМЛ?
может проблема в этом? |
пока справлялся.
а ты умеешь? если да, то буду очень даже благодарен за любой адекватный совет. |
а с помощью for each не легче цикл по XML гонять? не надо придумывать дополнительных переменных типа len и z...
что-то типа того. Код:
for each (var map:XML in XML_data..map) |
все переменные определим заранее, для чистоты эксперимента.
Код:
var xml:XML = <xml><x /><x /><x /></xml>;* + list for each for each разница в пару миллисекунд на тысяче итераций, можно опустить. итог: тоесть, да, Вы не умеете работать с XML. |
tyapichu легче конечно. Я сюда запостил то что первое "подвернулось под голову".
BloodHound спасибо за то что откликнулся и даже потратил время, но прости я не понял что ты пытался объяснить? =) Ты гоняешь по огромному циклу вот этот XML? "<xml><x /><x /><x /></xml>" И пытаешься тучу раз его парсить? Конечно же результаты будут в милисекунды на любом способе. (1 в три раза дольше, да) Попробуй прочитать мой первый пост, и понять, что дело имеется с огромным массивом данных. ~200kb, с кучей вложений и так далее. Любое действие не в цикле с таким XML занимает некоторое время. Попробуй погоняй эти тесты на чём то действительно большом, и тогда быть может мы оба будем знать чуточку больше ;) P.s. Проблему я решил, разбив данные на части, всё работает достаточно быстро. |
что то мне не удалось предыдущий пост отредактировать. прошу прощения в нем был не прав!
Код:
var xml:XML = <xml>...их тут очень много около 4000<x/></xml>;тест показал на моей машине: 3890 elements + XML = 12573 Вывод:BloodHound вы не правы, человек умеет работать с хмл просто действительно машина подвисает на данной операции. |
Вложений: 1
хм использование for each на той же хмл дало следующий результат. кажется мне придется взять свои слова обратно.
3890 elements + XML = 6 ---------------------------------------- тестирование всеми алгоритмами дало такой результат 3890 elements + XML = 5 * + XML = 12580 * = 12567 * + list = 4 for each = 2 for each + list = 4 код в прикреплении что называется no comments... |
me2, а вы пробовали подумать, какая разница между гонять цикл 1К раз, между гонять цикл с большим количеством элементов? я я вам скинул тесты скорости работы, разных подходов.
скорость работы растёт нелинейно. чем больше элементов в вашей XML, тем больше времени у вас будет это всё занимать. мне просто было лень делать большую XML, я все тесты обернул в циклы. ramshteks, что касается Вас, то ваша гениальность летит впереди Вас. проведя тест на самом медленном из подходов, и получив самый медленный результат, вы только доказали мою правоту. не говорите гоп пока не перепрыгните. как видно из "вовремя" сделанных выводов ramshteks, оборачивания в циклы всего лишь сглаживают кривые роста времени выполнения алгоритмов. |
Цитата:
Согласен, я поторопился, и действительно получил самый медленный из результатов. но поправился и взял свои слова обратно. И привел те результаты которые получил, доказывающие ваше мнение. |
BloodHound ну ты пойми, не стоит задача у меня отпрасить xml во что либо, и какой метод избрать. Это вообще должно обсуждаться отдельно. Тема ведь не названа "как быстро отпрасить xml"?=)
Тема о том, что флеш не может за раз ворочать большими xml данными. Сейчас у меня 800kb XMLa (статистика посещений, куча вложенной информации) Такую дуру у меня вообще ни один способ прокрутить не может за раз. А ведь данных будет только прибавляться. Выход прост, запускать обработку данных последовательно, пакетами, не привязываясь к циклам. В этоге - всё работает, задача решена. Единственный минус - нужно немного подождать, но это абсолютно адекватно для таких размеров. p.s. Выводы делать нужно имея максимум информации. Hint: 1 пост это не максимум. |
me2 если у тебя конечно есть такая возможность: может стоит разделить хмл. ведь смотри 800кб данных довольно много для хмл. и я уверен подгрузив их и распарсив они скорее всго просто не используются даже на 50%
так может стоит разделить и по мере надобности подгружать? ну это опять таки если есть возможость |
Цитата:
|
me2, Вы какие-то особенные места обитания вашего мозга обнаружили, до которых не достучаться? Ваш подход работает в несколько тысяч раз медленнее, а Вы меня парите какими-то первыми постами. дело не в "каких-то" действиях, а в полне конкретных. и эти действия ваши. я не приводил Вам примеры серилизаторов, я привёл вам сравнительные анализы скорости именно парсинга, но кажется это бесполезно. удачи вам.
|
__etc можно вывести. если это допустим график за определенный период. масштабируемый и всё такое. (что в данном случае и делается)
BloodHound. конечно это бесполезно. это ты паришь меня совершенно ненужными тестами. Решил будто знаешь мой подход. Доказываешь очевидные f1. Твои примеры не помогли полностью, но полюбому спасибо за участие. Нагрузка спала втрое. И давай ка побольше позитива, ага. |
me2, утю-путю ... не расстраивайтесь от того что я Вас запарил :) написанное Вами в примерах и является показателем, того как Вы это сделали. на сколько я понимаю всё остальное написано так же криво.
я из принципа сделал XML состоящий из 8K. в каждом ноде у меня лежало ещё по 300 нодов. тоесть 8000 * 300 = 2 400 000 нодов. этот XML у меня весил ~6Mb. он у меня распарсился за 40 мс. это наверно чудо. и мне кажется это гораздо быстрее чем 15 секунд, как Вы считаете? |
2me2: вы это... не обращаейте внимание на стиль BloodHound. У него работа нервная. Человек он это... хороший. =) Советы дельные дает.
|
2Chas: ни какая работа и ни какой опыт и знания не дают права на хамство.
хотя кого это волнует когда тебе есть что ответить на любой вопрос. да и понятие хамства у всех разное. |
Chas, работа нервная, а человек я ужасный :)
ramshteks, никакого хамства ... мысли вслух. просто есть 2 категории людей: одни что думают, то и говорят, а другие терпят других людей, и тягают у себя на шеи. |
BlooDHounD, просто я считаю что ваш опыт не должен передаваться другим людям в такой форме. Достаточно грубой, думаю со мной многие согласяться.
Я уважаю Ваш опыт и знания, и по вам видно что вы достаточно "крутой" :D Но не все на таком уровне, многим нужно еще много работать, а многие никогда и не достигнут его. Я просто к тому что стоит пожалуй относиться с большим пониманием к некомпетентности остальных, ведь и вы когда то были таким. Я постаянно работаю над тем чтоб стать лучше и чем больше занимаюсь, тем больше понимаю что до желаемого уровня еще очень далеко. Кто знает может я когда нибудь буду работать рукой об руку с вами в тайм зироу или стану конкурентом ваше канторе... ну это я уже замечтался :D но сейчас я много не знаю и не стоит относится пренебрежительно ко мне из за моих незнаний... Я конечно понимаю что вас не перевоспитать. Но я пожалуй отношусь к первой группе людей, и поэтому не высказаться не могу. |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
|
ramshteks, а причём тут агрессия? борьба заставляет человека мыслить. вот Вы противостоя мне как никак но придумали красивый текст, почему "так" а не "этак". и это вам плюс. а если у человека не взыграет самолюбие и он не докажет свою точку зрения, то он сам ничему не научится. и в следущий раз при приёме на работу, на вопрос, "почему?", он либо ответит не знаю, либо скажет "я так решил". оба варианта неправильны.
|
всю жизнь работаю фрилансером, один раз ходил на собеседование, ответил чт мне интересно. Потом два дня делал тестовое задание - сделал, сказали хорошо и отказали потому что я студент очник и вроде как не смогу на полный день. было обидно!А сейчас задался вопрос а правильным л был ответ: "интересно"... вполне возможно нет ))
хм... мне кажется мы друг друга поняли, ну по крайней мере я вашу точку зрения понял) |
Цитата:
|
После этого поста флейма больше не будет.
|
AL.exe в этом проекте я просто делаю флеш и не контролирую то что мне в него приходит. =)
|
А, ну тода да :) Обидно :)
|
| Часовой пояс GMT +4, время: 20:55. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.