Быстрая (де)сериализация на iPhone

Я разрабатываю игру/движок для iPhone OS. Я впервые использую Objective-C.

Я сделал свой собственный двоичный формат для данных геометрии и для текстур, я сосредоточился на PVRTC. Это должно быть оптимальным подходом с точки зрения скорости и пространства. Я действительно хочу свести время загрузки к минимуму и, если возможно, сохранить очень быстро.

Итак, теперь я пытаюсь сделать свой материал «Сущность» постоянным, не жертвуя производительностью.

Сначала я хотел использовать NSKeyedArchiver. Насколько я слышал, это не очень быстро. Кроме того, то, что я хочу сериализовать, - это в основном структуры, состоящие из чисел с плавающей запятой с некоторыми целыми числами и строками, поэтому на самом деле нет необходимости во всех этих накладных расходах на «граф объектов».

NSArchiver был бы более подходящим, но по какой-то причине они удалили его с iphone.

Итак, теперь я думаю о том, чтобы снова сделать свою собственную схему сериализации. Я ошибаюсь, думая, что NSKeyedArchiver медленный (я только прочитал, сам не проверял)? Если да, то как лучше всего кодировать/декодировать структуры (без указателей, в основном с плавающей запятой) без ущерба для скорости?


person Netcob    schedule 13.06.2010    source источник
comment
Я бы обязательно протестировал его сам и убедился, что он недостаточно быстр для ваших нужд.   -  person Wevah    schedule 14.06.2010


Ответы (2)


Не утруждайте себя оптимизацией того, что вы не тестировали... это может быть "достаточно хорошо". Один намек; двоичный формат примерно в 2 раза быстрее и почти в 2 раза эффективнее памяти, чем формат XML.

Помимо этого... ну... вы попадаете во всевозможные специфические вопросы. Вам нужны все данные сразу? Нужно, чтобы это транслировалось? Произвольные подмножества? Насколько это связано? Будет ли он преобразован в один или несколько объектов ObjC? Данные предварительно консервированы? и т. д. и т. д. и т. д.

person bbum    schedule 14.06.2010

У меня были хорошие результаты при использовании yajl-objc как для сериализации, так и для связи с сетью в стиле REST. Сервисы; он достаточно эффективен для моих нужд и прост в использовании.

При этом, если у вас нет тонны данных NSKeyedArchiver, скорее всего, все будет хорошо.

person rpetrich    schedule 14.06.2010