【问题标题】:Fast (de)serialization on iPhoneiPhone 上的快速(反)序列化
【发布时间】:2010-06-13 16:31:18
【问题描述】:

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

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

所以现在我正在尝试在不牺牲性能的情况下让我的“实体”东西持久化。

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

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

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

【问题讨论】:

  • 我肯定会自己测试它并确保它的速度不足以满足您的需求。

标签: iphone objective-c cocoa performance nskeyedarchiver


【解决方案1】:

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

除此之外......嗯......你会遇到各种特定于案例的问题。您需要一次获取所有数据吗?需要流式传输吗?任意子集?它是如何连接的?它会被重组为一个或多个 ObjC 对象吗?数据是预装的吗?等等等等……

【讨论】:

    【解决方案2】:

    我在使用yajl-objc 进行序列化和与 REST 样式的 Web 服务通信时取得了不错的效果;它的效率足以满足我的需求并且易于使用。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-03
      • 1970-01-01
      • 1970-01-01
      • 2014-08-29
      • 1970-01-01
      • 1970-01-01
      • 2013-05-04
      相关资源
      最近更新 更多