首页 > 编程语言 >C# .NET的BinaryFormatter、protobuf-net、Newtonsoft.Json以及自己写的序列化方法序列化效率和序列化后的文件体积大小对比

C# .NET的BinaryFormatter、protobuf-net、Newtonsoft.Json以及自己写的序列化方法序列化效率和序列化后的文件体积大小对比

时间:2023-12-23 23:56:25浏览次数:32  
标签:Newtonsoft protobuf BinaryFormatter Json net 序列化

https://www.cnblogs.com/s0611163/p/11872484.html

测试结果整理后:

 

结论:

1、这几个工具中,protobuf-net序列化和反序列化效率是最快的

2、BinaryFormatter和Newtonsoft.Json反序列化慢的比较多

3、Newtonsoft.Json序列化后的文件体积比较大

4、Newtonsoft.Json在序列化反序列化过程中消耗内存较多(上图未体现,实际测试中内存占用多)

5、不出我所料,自己写的简单序列化反序列化方法也很快,为什么自己写的也很快呢?是因为使用的是最笨的方法,直接赋值,没有使用反射

6、自写序列化方法生成的文件体积也比较小,因为除了分隔符和数据内容之外,没有多余的东西,虽然分隔符很短,但是大量重复的分隔符也会占用一定的空间,所以自写的序列化方法生成的文件体积比protobuf-net要大

7、protobuf-net比BinaryFormatter反序列化快了将近一个数量级,很有实用价值

 

 

C# 解析JSON详解

https://blog.csdn.net/u010632165/article/details/133314004

 

 

标签:Newtonsoft,protobuf,BinaryFormatter,Json,net,序列化
From: https://www.cnblogs.com/liushao-AI/p/17923861.html

相关文章

  • 梭梭带你彻底搞懂YAML序列化语言
    目录前言简介yaml基本语法规则yaml支持的数据结构有三种基本语法大小写敏感用缩进表示层级关系用#表示注释一个文件中可以包含多个文件的内容数据结构与类型对象(Mapping)数组(Sequence)标量(Scalars)字符串(String)布尔值(Boolean)整数(Integer)浮点数(FloatingPoint)空(Null)时间戳(Timestamp)......
  • dfr之序列化常用字段、soruce、定制返回字段、多表关联反序列化、ModelSerializer的使
    一、序列化类常用字段#除了CharField以外,还要很多别的---》表模型中models.CharField--->基本一一对应#如果跟表模型中对不上:你统一用CharField#重要:(后面说)ListFieldDictField字段字段构造方式BooleanFieldBooleanField()NullBooleanFieldNullB......
  • 使用Newtonsoft.Json进行Json与XML相互转换
    XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析好像没啥难度。今天突然发现Newtonsoft.Json中有关于Json和XML互转的方法,所以顺带记录总结一下。一、关于Newtonsoft.JsonNewtonsoft.Json(Json.Net)是一款.NET中开源的Json序列化和反序列化类库。Json.Net是一个读写Json效......
  • Jackson给给指定类设置序列化规则
    背景业务中需要对返回给APP端的数据进行特殊处理,包括:null值转换成空字符串日期(LocalDateTime)类型转换成时间戳金额根据用户Locale做格式化需要保证不影响内部其他服务的互相调用,因此让所有返回给APP的VO对象实现自定义的Vo接口,然后指定对Vo接口的类进行对应的转换。实现co......
  • Fastjson2基础使用以及底层序列化/反序列化实现探究
    来自于:https://www.cnblogs.com/6b7b5fc3/p/17134421.html1Fastjson2简介Fastjson2是Fastjson的升级版,特征:协议支持:支持JSON/JSONB两种协议部分解析:可以使用JSONPath进行部分解析获取需要的值语言支持:Java/Kotlin场景支持:Android8+/服务端其他特性支持:GraalNative-Image......
  • protobuf、protobuf-c、protobuf-c-rpc在Linux(Ubuntu18.04)编译安装及交叉编译arm\aar
    protobuf、protobuf-c、protobuf-c-rpc在Linux(Ubuntu18.04)编译安装及交叉编译arm\aarch64版本文章目录protobuf、protobuf-c、protobuf-c-rpc在Linux(Ubuntu18.04)编译安装及交叉编译arm\aarch64版本一、前言二、protobuf、rpc、protobuf-c、protobuf-c-rpc介绍1、protobuf2、protob......
  • drf之序列化类
    序列化类介绍1序列化qs对象,单个对象做序列化给前端2反序列化数据校验:前端传入数据---》校验数据是否合法3反序列化---》前端传入数据,存到数据库中#因为咱么在写接口时,需要序列化,需要反序列化,而且反序列化的过程中要做数据校验---》drf直接提供了固定的写法,只要按照固......
  • Externalizable接口实现序列化与反序列化
    Externalizable接口实现序列化与反序列化packagecom.example.core.mydemo.java;importcom.example.core.mydemo.json2.GsonUtils;importjava.io.*;/***Externalizable接口实现序列化与反序列化**Serialization(序列化):将java对象以一连串的字节保存在磁盘文件......
  • Java序列化和反序列化 Serializable BeanUtils.copyProperties赋值属性方法
    Java序列化和反序列化SerializableBeanUtils.copyProperties赋值属性方法packagecom.example.core.mydemo.java;importcom.example.core.mydemo.json2.GsonUtils;importorg.springframework.beans.BeanUtils;importjava.io.*;/***Java序列化和反序列化Serializ......
  • 【代码块】-结构体序列化与反序列化
    整理代码块代码块整理后存储,供后期使用结构体序列化与反序列化usingSystem;usingSystem.Runtime.InteropServices;usingSystem.Text;namespacestructTest{///<summary>///结构体序列化///</summary>publicclassstructSerializable{......