1 protobuf/xml/json对比

从数据的存储格式的角度进行对比

假如要存储一个键值对:

{price:150}

1.1 protobuf的表示方式

message  Test {

optional int32 price = 1;

}

protobuf的物理存储:08 96 01,就3个字节。

采用key-value的方式存放,第一个字节是key,它是field_number << 3 | wire_type构成。

所以field number是1,wire type是0,即varint,有了这个wire type就可以用来解析96 01了。

96 01 = 1001 0110 0000 0001

即001 0110 000 0001

least significant first

1001 0110 = 128 + 16 + 4 + 2 = 150.

只要3 bytes

1.2 xml的存储表示

<some>

<name>price</name>

<value>150</value>

</some>

大约要36 bytes

1.3 json的存储表示

{price:150}

大约11bytes

比较可见相比于json和xml,protobuf对象序列化时可以节省非常大的空间,从而带来非常快的传输速度。

另外由于protobuf表示简单,解析速度也更快。

参考

1 https://developers.google.com/protocol-buffers/docs/encoding

protobuf json xml比较的更多相关文章

  1. golang gob 有什么优势? gob/protobuf/json/xml 效率对比,benchmark 压力测试

    TODO 待研究: https://blog.csdn.net/love_se/article/details/7941876 https://blog.csdn.net/wangshubo1989/ ...

  2. 计算机程序的思维逻辑 (63) - 实用序列化: JSON/XML/MessagePack

    上节,我们介绍了Java中的标准序列化机制,我们提到,它有一些重要的限制,最重要的是不能跨语言,实践中经常使用一些替代方案,比如XML/JSON/MessagePack. Java SDK中对这些格式 ...

  3. Java编程的逻辑 (63) - 实用序列化: JSON/XML/MessagePack

    本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...

  4. ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C# 往线程里传参数的方法总结 TCP/IP 协议 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图 (转)值得学习百度开源70+项目

    ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml)   我们都知道在使用WebApi的时候Controller会自动将Action的返回值自动进行各种序列化处理(序列化为 ...

  5. Python导出Excel为Lua/Json/Xml实例教程(三):终极需求

    相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 Python导出E ...

  6. Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验

    Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出E ...

  7. Python导出Excel为Lua/Json/Xml实例教程(一):初识Python

    Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...

  8. JSON&XML总结

    JSON&XML: JSON----- //英译 Serialization:序列化 perform:执行 segue:继续 IOS5后 NSJSONSerialization解析 解析JSO ...

  9. JSON/XML序列化与反序列化(非构造自定义类)

    隔了很长时间再重看自己的代码,觉得好陌生..以后要养成多注释的好习惯..直接贴代码..对不起( ▼-▼ ) 保存保存:进行序列化后存入应用设置里 ApplicationDataContainer _a ...

随机推荐

  1. [Machine Learning with Python] Data Preparation by Pandas and Scikit-Learn

    In this article, we dicuss some main steps in data preparation. Drop Labels Firstly, we drop labels ...

  2. CVPR 2019|PoolNet:基于池化技术的显著性检测 论文解读

    作者 | 文永亮 研究方向 | 目标检测.GAN 研究动机 ​ 这是一篇发表于CVPR2019的关于显著性目标检测的paper,在U型结构的特征网络中,高层富含语义特征捕获的位置信息在自底向上的传播过 ...

  3. TIOBE排行榜

    作者:码思客链接:https://zhuanlan.zhihu.com/p/37513668来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 1 JAVA 毫无疑问的业界 ...

  4. Codeforces 583 DIV2 GCD Table 贪心

    原题链接:http://codeforces.com/problemset/problem/583/C 题意: 大概就是给你个gcd表,让你还原整个序列. 题解: 由$GCD(a,a)=a$,我们知道 ...

  5. Spoj MKTHNUM - K-th Number

    题目描述 English Vietnamese You are working for Macrohard company in data structures department. After f ...

  6. mysql之group by,order by

    写在前面 上篇文章介绍mysql的增删改查操作,这篇将介绍group和order by操作. 系列文章 mysql之创建数据库,创建数据表 mysql之select,insert,delete,upd ...

  7. java.io.IOException: Cannot run program "java" (in directory "/data01/var/lib/jenkins/workspace/2540cb62a866eda983ab8cba34fcd4f9"): error=2, No such file or directory

    通过下图所示方式,可以在同一台机器上启动多个jenkins slave 执行项目的时候报错: 解决办法:首先排查,目标文件或者目录是否存在,如果存在,则在目录机器添加/usr/bin/java的软链接 ...

  8. sublime text常用快捷键(转)

    选择一个选中项的下一个匹配项: ctrl+d 把光标放在一个单词上,按下ctrl+ D,将选择这个单词.一直按住ctrl且按D多次,将选择当前选中项的下一个匹配项.通过按住ctrl,再按D三次,将选择 ...

  9. 【温故知新】——CSS黑魔法小技巧可以少些不必要的js

    前言:这篇文章是转载[前端开发博客]的一篇技术文章,并非本人所写.只是个人觉得很实用,所以分享给大家.原文链接:github.com 1.利用 CSS 的 content 属性 attr 抓取资料需求 ...

  10. 2017.2.7 开涛shiro教程-第六章-Realm及相关对象(一)

    原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398 根据下载的pdf学习. 第六章 Realm及相关对象 1.用户.角色.权限的关系 用户和角 ...