Самая быстрая схема сериализации / десериализации для структуры данных

У меня есть приложение для Android, которое использует структуру данных, состоящую из пары двоичных деревьев и других структур, таких как список и массивы, все связанные друг с другом. Я хотел бы, чтобы вы все предложили схему сохранения и извлечения этой структуры данных. структура данных создается посредством синтаксического анализа SAX (источник - файл XML). Я пробовал сериализацию / десериализацию Java, но обнаружил, что она как минимум в два раза медленнее, чем использование исходного парсера SAX для построения структуры. Время серализации (из ОЗУ в хранилище) не имеет большого значения, поскольку оно будет происходить в фоновом режиме, но мне нужна более быстрая схема десериализации (сохранение в ОЗУ).

Мне не нужны какие-либо функции проверки типов и т. д. все, что мне нужно, это быстрая серализация и более быстрая схема десериализации. также является ли Google Protocol Buffer хорошим кандидатом? пожалуйста, предложите ..

(примечание: мое приложение будет показывать пустое окно (Activity) до тех пор, пока структура данных не будет десериализована, поэтому скорость имеет первостепенное значение, и я максимально уменьшил свою DS)

заранее спасибо


person rogue-one    schedule 23.08.2011    source источник
comment
ДОЛЖНО ли ваше приложение отображать белый экран? Выплесните брызги и сделайте тяжелую работу на заднем плане. Если с точки зрения удобства использования это займет больше 0,75–1 секунды, вам все равно следует это сделать. Но мне также любопытно, как другие обращаются с ser, наблюдая за этой веткой :)   -  person yep    schedule 23.08.2011
comment
Хотя мне нравится буфер протокола, некоторые люди говорят, что он медленнее и хуже, чем msgpack.org   -  person mibollma    schedule 23.08.2011
comment
@yep: да, моему приложению требуется около 3 секунд, чтобы проанализировать всю структуру данных .. У меня есть индикатор выполнения, но я бы хотел сократить задержку ..   -  person rogue-one    schedule 25.08.2011
comment
@mibollma Спасибо, попробую тоже messagepack ..   -  person rogue-one    schedule 25.08.2011


Ответы (1)


Де / сериализация по умолчанию обычно довольно медленная, поскольку она сильно зависит от рефлексии (которая медленная). Вы можете попробовать реализовать его вручную, переопределив readObject / writeObject в своем классе, это обычно дает заметный прирост производительности.

person Konstantin Burov    schedule 23.08.2011