Protobuf对比XML、Json等其他序列化的优势

protobuf 不管是处理时间上,还是空间占用上都优于现有的其他序列化方式。内存暂用是java 序列化的1/9,时间也是差了一个数量级,一次操作在1us左右。缺点:就是对象结构体有限制,只适合于内部系统使用。

json格式在空间占用还是有一些优势,是java序列化的1/2.6。序列化和反序列化处理时间上差不多,也就在5us。当然这次使用的jackson,如果使用普通的jsonlib可能没有这样好的性能,jsonlib估计跟java序列化差不多。

xml相比于java序列化来说,空间占用上有点优势,但不明显。处理时间上比java序列化多了一个数量级,在100us左右。

以前一种的java序列化,表现得有些失望

hessian测试有点意外,具体序列化数据上还步入json。性能上也不如jackjson,输得比较彻底。

hessian使用压缩,虽然在字节上有20%以上的空间提升,但性能上差了4,5倍,典型的以时间换空间。总的来说还是google protobuf比较给力

protobuf

jackson

xstream

Serializable

hessian2

hessian2压缩

hessian1

序列化(单位ns)

1154

5421

92406

10189

26794

100766

29027

反序列化(单位ns)

1334

8743

117329

64027

37871

188432

37596

bytes

97

311

664

824

374

283

495

准备环境:

1,Python版本3.5.4

2,Protobuf版本3.7.0

3,Protobuf安装包:protoc-3.7.0-rc1-win64.zip

4,Win10 64位系统

步骤:

【下载protoc】

https://github.com/google/protobuf/releases

根据自己的平台下载对应的编译器,我的是win10-64位,所以下载  protoc-3.7.0-rc1-win64.zip

设置环境变量:这一步使你在本地任何地方使用protoc这个指令

(右击“此电脑”。。。)

测试protoc:

新打开一个命令行:输入protoc --version,如果将输出版本号,说明protoc安装好了

【编写.proto协议文件】

新建一个protobuf文件夹,手动创建test2.proto文件:

并在test2.proto中输入:

syntax = "proto2";

message testinfo

{

required int32 devtype = 1;

required int32 devid = 2;

required int32 unitid = 3;

required int32 chlid = 4;

optional int32 testid = 5 [default = 0];

required bytes stepdata = 6;

}

【编译】:

打开命令行,切换到protobuf文件夹下下面,执行protoc --python_out=./ test2.proto

然后会生成一个python文件

在目录下新建文件 test.py,写入代码

importtest2_pb2

testinfo=test2_pb2.testinfo()

testinfo.devtype= 100testinfo.devid= 2testinfo.unitid= 3testinfo.chlid= 4testinfo.testid= 250testinfo.stepdata= b'abd'

print(testinfo, testinfo.devtype) # 打印 protobuf 结构的内容

out=testinfo.SerializeToString()print(out) # 打印 Protobuf 序列字符串

decode=test2_pb2.testinfo()

decode.ParseFromString(out)print(decode) # 打印 解析Protobuf后的内容

运行python代码,得到以下结果,证明实验成功!

python374安装windows10_Windows 10 搭建Python3 安装使用 protobuf相关推荐

  1. Windows 10 搭建Python3 安装使用 protobuf

    Windows 10 搭建Python3 安装使用 protobuf Protobuf对比XML.Json等其他序列化的优势 protobuf 不管是处理时间上,还是空间占用上都优于现有的其他序列化方 ...

  2. python3命令行安装pip_win10系统下python3安装及pip换源和使用教程

    一.python3的安装 建议安装python3,python2在未来将不再维护. python官方下载地址 https://www.python.org/downloads/windows/ 选择 ...

  3. 验证python安装_Python环境搭建(安装、验证与卸载)

    电脑系统版本   :Win8.1/64位 Python官网地址:www.python.org Python安装版本:3.7.2 本文目录: 一.Python的安装 二.验证Python安装的情况 三. ...

  4. centos安装python_python3.10 如何下载安装?

    安装python分三个步骤: *下载python *安装python *检查是否安装成功 1.下载Python (1)python下载地址https://www.python.org/download ...

  5. python27安装教程-Python2和Python3安装教程

    当同时安装Python2和Python3后,如何兼容并切换使用详解(比如pip使用) python成了2.7而py成了3.7,呵呵! 当同时安装Python2和Python3后,如何兼容并切换使用详解 ...

  6. linux14.10硬盘安装,Windows 10下硬盘安装Ubuntu 14.10图文教程

    著名的Linux发行版 Ubuntu 系统已经释出最新的 14.10 版,同时大家也可能不知道其实它已经十岁了.与半年前的14.10相比,这次Ubuntu 14.10系统升级的修改幅度很小,外观界面几 ...

  7. Lustre安装-Lustre2.10.0 Client安装-CentOS/RHEL(原创)

    Lustre2.10.0 Client客户端安装-CentOS/RHEL 个人博客地址:http://blog.zhangchi.xyz,欢迎前来交流 学校超算中心使用了Lustre文件系统,速度超级 ...

  8. python3安装cx oracle,[求助]python3安装cx_Oracle 报错

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 ;__file__='/tmp/pip_build_root/cx-Oracle/setup.py';exec(compile(getattr(token ...

  9. linux python3安装教程_linux python3安装

    源码安装由3个步骤组成: 一.安装包下载 wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz #包下载 tar -xvJf ...

最新文章

  1. 使用Junit单元测试:Cannot instantiate test(s): java.lang.SecurityException: Prohibited package name: java
  2. 使用ganymed-ssh2-build通过ssh获得远程服务器参数
  3. mysql druid 多数据源_SpringBoot使用阿里数据库连接池Druid以及多数据源配置
  4. 如何生成自己的Yaas Service yaas
  5. iOS 设计模式之工厂模式
  6. CloudCC:2017年下半年企业移动CRM市场风向窥测
  7. js几个页面生成pdf 然后批量打印_太好用了!这款免费PDF工具能够满足你的各种需求...
  8. Android通知栏Notification弹出横幅显示的解决方法
  9. linux mint 19安装 kvm 软件包
  10. JavaWeb使用cookie实现记住密码,密码加密
  11. 国讯之MTK Ralink方案GPIO驱动介绍
  12. 你问我DataX是谁?对不起,我活在Apache SeaTunnel的时代!
  13. H264 YUV420视频翻转
  14. 解决Windows无法访问指定设备路径或文件,您可能没有合适的权限访问这个项目
  15. 【Android Gradle 插件】Splits 配置 ④ ( Splits#language{} 脚本块配置 | 根据语言进行分包 | LanguageSplitOptions 配置简介 )
  16. tableau 集动作_Tableau训练营:7天,每天30分钟,零基础get数据可视化基本姿势
  17. Unity接入Google登录
  18. C#操作json字符串
  19. 【gitlab+jenkins+docker】第一节 基础环境介绍与准备
  20. vue 预览 word 文件 docx

热门文章

  1. MMM与MHA的区别
  2. 从敲代码到敲文字,程序员大V“敖丙”的自媒体之路
  3. 使用谷歌浏览器调试手机网页
  4. job是什么 oracle12c_Oracle 11g自带的系统Job介绍
  5. 城市排水管网流量监测系统解决方案
  6. 计算机通信技术论文,计算机通信技术专业论文选题 计算机通信技术论文题目如何取...
  7. LuoguP4383 [八省联考2018]林克卡特树lct
  8. python运行器_python 运行器
  9. JIO学习(一)输入流综述
  10. 有源医疗器械说明书如何编写?附核查清单