Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.12.2009, 16:18
proxiServer вне форума Посмотреть профиль Отправить личное сообщение для proxiServer Найти все сообщения от proxiServer
  № 1  
Ответить с цитированием
proxiServer
 
Аватар для proxiServer

Регистрация: Jun 2006
Сообщений: 400
По умолчанию Загрузка и разбор большого количества данных.

В флешку нужно загрузить инфу. Количество позиций около 30 тысяч. У каждой позиции 5-10 свойств. Для теста попробовал XML. Понятно что грузится очень долго. В вебе использовать не собираюсь. Среда - локальная сеть)

Подскажите пожалуйста, что можно использовать для этого? Знаю есть какой-то loadvars? Есть ли вариант грузить и разбирать файл побайтно?

Так же подошел бы вариант, с зашивкой данных уже внутрь флешки. Данные меняются крайне редко.

Подскажите насколько сильно эти способы различаются по скорости разбора и про особенности. Может посоветуете что?

Старый 25.12.2009, 16:29
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 2  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Сталкивался со схожей проблемой, правда позиций было не 30 000 а 5 000
Каждую позицию вынес в отдельный xml и сделал еще один xml в котором были тупо перечислены имена файлов (по сути - айдишники). При парсинге списка тормозов не возникало, остальное подгружал по мере необходимости.

Сначала сдуру сделал перекидывание всех айдишников в массив, потом дошло, что XMLList - тоже вполне себе массив, и ничего лишнего тут городить не надо. Главное сохранить на него ссылку, чтобы он не строился каждый раз.

Код AS3:
 
//очень плохо
 
for(var i:int = 0; i < xmlIndex.record.length(); i++)doSomething(xmlIndex.record[i]); 
 
//правильно
 
var recordsList:XMLList = xmlIndex.record;
var listLength:int = recordsList.length();
 
for(var i:int = 0; i < listLength; i++)doSomething(recordsList[i]);
__________________
тонкий тролль, осеянный благодатью

Старый 25.12.2009, 16:34
Himerets вне форума Посмотреть профиль Отправить личное сообщение для Himerets Найти все сообщения от Himerets
  № 3  
Ответить с цитированием
Himerets
 
Аватар для Himerets

Регистрация: Oct 2009
Адрес: Калининград
Сообщений: 134
Данные, зашитые во флешку будут ближе к ней, чем загружаемые посредством loadVars, поэтому, если данные не меняются, то лучше зашивать.
Разбирать данные побайтно конечно можно, но это будет достаточно медленно и для этого придется писать свои алгоритмы. Тут лучше использовать че-то типа array.join() при записи и string.split() при разборке
__________________
Жду ответа, как соловей лета. (С) Морис Мосс, 'IT Crowd'

Старый 25.12.2009, 20:15
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 4  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Если все локально, то AIR + SQLLite, бинарные данные тоже без проблем (ByteArray). Если запихивать внутрь, то каждая позиция отдельный объект (типизированный), всё загнать в Vector с фиксированной длинной (хотя мнения расходятся, дает ли это ощутимый прирост скорости). Самый быстрый вариант зашить во флешку (нет необходимости парсить данные). Насчет скорости бинарника и базы данных, зависит от того как у вас организован доступ к данным (все скопом или порциями).

Старый 25.12.2009, 21:09
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 5  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Если данные меняются крайне редко - делаем примерно следующее:
http://www.flashdevelop.org/communit...=5856&start=15

Если в двух словах: сериализуем данные либо в Array, либо в какую-нибудь другую коллекцию по желанию (их правда, всего-то по-настоящему XMLList и Object, Vector и Dictionary не сериализируйтся).
и либо встраиваем непосредственно во флешку, либо FileStream.open() либо URLLoader / URLStream загружаем.
Более продвинутый вариант - создать свою структуру данных и ее сериализовать используя IExternalizable...
__________________
Hell is the possibility of sanity

Старый 26.12.2009, 02:15
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 6  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
30К+ объектов всегда будут тормозить при парсинге.

FileStream (AIR only)

Я к тому, что не загрузка, а парсинг занимает время.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.


Последний раз редактировалось dimarik; 26.12.2009 в 02:20.
Старый 26.12.2009, 06:46
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 7  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Для парсинга можно и прогрессбар сделать, главное чтобы флэшка не подвешивала систему на несколько секунд, как это бывает если бездумно влепить цикл.
__________________
тонкий тролль, осеянный благодатью

Создать новую тему Ответ Часовой пояс GMT +4, время: 21:07.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:07.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.