Tag: Messagepack

最快捷的包装

每个程序员都听说过JSON格式。 很好,易于理解,可以采用。 在大多数情况下,它用于服务器和客户端应用程序之间的通信。 但是……您可能会意识到,当您拥有大数据集以进行快速传输时,这不是最佳选择,无法真正对本机模型进行快速序列化或反序列化。 因此,还有其他一些但尚未流行的格式。 例如,谷歌使用的格式叫做Flatbuffers 。 最初,他们是为游戏开发和其他性能关键型应用程序创建的。 现在,Facebook将其用于数据传输。 在我们公司中,我们讨论了在客户端和服务器端进行JSON替换应采用的最佳格式。 由于体积小和性能好,我们观察到了MessagePack格式。 我已经在github上访问了已知的MessagePack实现,以便将其集成到我们的swift项目中。 经过一番苦苦挣扎和几次卡纸试验后,我终于找到了a2消息打包器 。 打包和解压缩我们复杂的结构和类层次结构变得微不足道。 有关如何使用此打包程序的完整而详细的技术教程,请参见Wiki github页面 。 集成后,我们具有以下性能: 优化标记=快速,iPhone 4,JSON文件大小2.7 MB(zip 190kB) 从JSON文件加载NSData = 0.0921s 将NSData转换为JSON对象= 1.203s JSON转换为本机模型= 3.2691s 原始模型打包到字节数组= 3.051s 字节数组到NSData = 0.0033s NSData到Byte数组= 0.00390s 本地模型的字节数组= 2.6518s 将NSData写入文件= 0.101s 为了进行测试,我们有一个大的JSON文件。 字节数组表示以MessagePack格式打包的数据。 将字节数组转换为原始模型的速度明显快于将标准JSON对象转换为原始模型的速度。 swift中的JSON对象表示实际上是NSDictionary或NSArray。 而且,打包的模型可以轻松转换为NSData并写入文件。 打包数据的文件大小约为743kB,比原始JSON文件小约3.5倍。 它被压缩到200kB,这与压缩后的JSON文件的大小类似。 我相信,通过一些技巧,MessagePack模块可以大大加快速度,就像在FlatBuffers格式中所做的那样,正如您在本文中所看到的。 快速应用程序中的本机模型应用程序也可以使用系统基础上的NSKeyedArchiever类保存到文件中,但事实证明,它比同样的MessagePack-ing慢几倍。 这种打包概念使您可以从Cocoa框架和NSObject类轻松地编写代码。 MessagePack格式的唯一缺陷是它的无方案。 打包数据投入生产后,很难添加或删除属性。 无论如何,MessagePack都很棒。 所以,去吧。 […]