json与protobuf的速度之争

作者: 咸鱼的酱 | 来源:发表于2017-09-28 15:30 被阅读66次
    json是这些年慢慢兴起的轻量级数据交换格式。比起老大哥XML。因其更快的解析速度和更小的体积,可谓是用过的都说好。一般情况下json足够满足你的大多数需求,但是在计算机领域,没有最快,只有更快。
    当你的传输数据大到一定程度的时候,json的速度也不能满足你需求的时候,你就需要更快的protobuf。

protocolbuffer(以下简称PB)是google 的一种数据交换的格式,它独立于语言,独立于平台。(百度百科)。
因为其使用二进制存储,所以会比json更快。但是缺点也是显而易见,二进制存储易读性很差。

    我曾遇到要解析40M json的需求。在PC端,使用litjson需要解析10秒钟。但是将相同的内容通过protobuf再导出成bytes。只要17M。缩小了2.5倍左右。但是读取速度只要0.8秒,还包括了数据解析后的处理。

0.1秒和0.008秒可能给人差别不大,但是10秒和0.8秒的差别真的是天壤地别。

如果需要传输的数据量比较大时,protobuf是你的不二选择。

如何使用呢?

我们在unity中只需要使用 protobuf-net 这个dll就行了,下面是其在GitHub上的链接。如何使用他链接内已经非常的清楚了,我在这不重复说了。
其中的坑:

将类导出成protobuf或者是从protobuf导入到类时,基类的属性是无法导入的。所以说使用protobuf的模型类最好还是不要相互继承。这点需要注意。

2.unity在pc端读取2进制文件的文件是没有要求的。.bat.bin都可以用C# 的IO类来读取。但是在安卓端因为没法使用IO。如果通过resourecs.load来读取的话,2进制文件的后缀需要是.bytes。

链接:https://github.com/mgravell/protobuf-net

相关文章

  • json与protobuf的速度之争

    protocolbuffer(以下简称PB)是google 的一种数据交换的格式,它独立于语言,独立于平台。(百度...

  • win10下golang使用protobuf

    json与protobuf做数据传输对比:json用起来的确很方便。但相对于protobuf数据量更大些。做一个移...

  • PHP序列化对比(Protobuf&Json)

    概念 Json: https://en.wikipedia.org/wiki/JSON Protobuf: htt...

  • content of vapor3

    In Vapor 3, all content types (JSON, protobuf, URLEncoded...

  • protobuf在iOS中接入

    前言 现在主流的还是json这种格式,易读,解析没有任何难度.protobuf具有序列化和反序列化速度快,占用空间...

  • google的protobuf使用

    针对数据解析,个人觉得json,xml等比protobuf 效率低,最近看了下goole的protobuf,发现c...

  • Google Protobuf简单使用

    一、简介 1.什么是ProtoBuf? Protobuf是google推出的数据交换格式,相比xml、json主要...

  • ProtoBuf试用与JSON的比较

    介绍 ProtoBuf 是google团队开发的用于高效存储和读取结构化数据的工具。什么是结构化数据呢,正如字面上...

  • Vapor-Content

    在Vapor3,所有内容类型(JSON, protobuf, URLEncodedForm, Multipart,...

  • swift Protobuf (一)初探

    什么是ProtoBuf?Protobuf是google推出的数据交换格式,其功能类似于xml、json,用户数据传...

网友评论

    本文标题:json与protobuf的速度之争

    本文链接:https://www.haomeiwen.com/subject/yfxvextx.html