iPhone上的快速(反)序列化

时间:2010-06-13 16:31:19

标签: iphone objective-c cocoa performance nskeyedarchiver

我正在为iPhone OS开发游戏/引擎。这是我第一次使用Objective-C。

我为几何数据和纹理制作了自己的二进制格式,我专注于PVRTC。就速度和空间而言,这应该是最佳方法。我真的希望将加载时间保持在最低限度 - 如果可能的话 - 也能够非常快地保存。

所以现在我试图让我的“实体”内容持久而不牺牲性能。

首先我想使用NSKeyedArchiver。据我所知,它不是很快。此外,我想要序列化的主要是由具有一些整数和字符串的浮点数组成的结构,因此实际上不需要所有“对象图”开销。

NSArchiver会更合适,但出于某种原因,他们会将其从iphone中踢出来。

所以现在我正在考虑重新制作自己的序列化方案。我错误地认为NSKeyedArchiver很慢(我只读过它,我自己没有测试过)?如果是这样,在不牺牲速度的情况下编码/解码结构(没有指针,主要是浮点数)的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

不要打扰优化你没有测试过的东西......它可能“足够好”。一个提示;二进制格式的速度是XML格式的2倍,几乎是内存效率的2倍。

除此之外......好吧......你会遇到各种具体案例。您是否一次需要所有数据?需要它流式传输吗?任意子集?这有多联系?它会被重构成一个或多个ObjC对象吗?数据是预先封装的吗? etc.etc.etc ...

答案 1 :(得分:0)

使用yajl-objc进行序列化和与REST风格的Web服务进行通信,我得到了很好的结果。它足以满足我的需求并且易于使用。

话虽如此,除非您有大量数据NSKeyedArchiver,否则可能会做得很好。