iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >MessagePack和System.Text.Json序列化和反序列化性能及对比分析
  • 181
分享到

MessagePack和System.Text.Json序列化和反序列化性能及对比分析

摘要

本博客将测试MessagePack 和System.Text.JSON 序列化和反序列化性能项目文件: Program.cs代码: using Benchmarkdotnet.Ru

本博客将测试MessagePack 和System.Text.JSON 序列化和反序列化性能
项目文件:

Program.cs代码:

using Benchmarkdotnet.Running;
using Demo;

var summary = BenchmarkRunner.Run<SerializeTest>();

SerializeTest.cs代码:

using BenchmarkDotNet.Attributes;
using MessagePack;
using System.Text.json;

namespace Demo
{
    [MemoryDiagnoser, RankColumn, MaxColumn,MinColumn]
    public class SerializeTest
    {
        public List<TestModule> TestDatas = new();

        public byte[] Pack;

        public byte[] Json;


        public SerializeTest()
        {
            for (int i = 0; i < 3000; i++)
            {
                var d = new TestModule(Guid.NewGuid(), Guid.NewGuid().ToString("N") + i);
                d.i = i;
                TestDatas.Add(d);
            }

            Pack = MessagePackSerializer.Serialize(TestDatas, MessagePack.Resolvers.ContractlessStandardResolver.Options);
            Json = JsonSerializer.SerializeToUtf8Bytes(TestDatas);

        }

        [Benchmark]
        public byte[] GetMessagePackByte()
        {
            return MessagePackSerializer.Serialize(TestDatas, MessagePack.Resolvers.ContractlessStandardResolver.Options);
        }

        [Benchmark]
        public byte[] TextJsonByte()
        {
            return JsonSerializer.SerializeToUtf8Bytes(TestDatas);
        }

        [Benchmark]
        public List<TestModule> GetMessagePack()
        {
            return MessagePackSerializer.Deserialize<List<TestModule>>(Pack, MessagePack.Resolvers.ContractlessStandardResolver.Options);
        }

        [Benchmark]
        public List<TestModule>? TextJson()
        {
            return JsonSerializer.Deserialize<List<TestModule>>(Json);
        }


        public class TestModule
        {

            public TestModule(Guid id, string? value)
            {
                Id = id;
                Value = value;

            }

            public Guid Id { get; set; }

            public int i { get; set; }

            public string? Value { get; set; }

            public string MyProperty { get; set; } = "MyProperty";
            public string MyProperty1 { get; set; } = "MyProperty";
            public string MyProperty2 { get; set; } = "MyProperty";
            public string MyProperty3 { get; set; } = "MyProperty";
            public string MyProperty4 { get; set; } = "MyProperty";
            public string MyProperty5 { get; set; } = "MyProperty";
            public string MyProperty6 { get; set; } = "MyProperty";
            public string MyProperty7 { get; set; } = "MyProperty";
            public string MyProperty8 { get; set; } = "MyProperty";
            public string MyProperty9 { get; set; } = "MyProperty";
            public string MyProperty10 { get; set; } = "MyProperty";

        }
    }
}

然后我们将使用基准测试开始我们的性能测试

然后测试结束:

我们看到我们的MessagePack的性能在序列化Byte[]的表现对比TextJson上不光是性能比TextJson的更快,内存占用也更小
然后是反序列化对象 MessagePack对比TextJson 性能和内存占用都更强
在使用MessagePack的前提上我配置了MessagePack的配置 MessagePack.Resolvers.ContractlessStandardResolver.Options
如果不加 MessagePack.Resolvers.ContractlessStandardResolver.Options 性能可能并不比Json更快更好 启用了配置以后模型不需要添加特性 并且性能更快
在需要更快性能的场景MessagePack更适合 并且传输的体积更小,所以非常推荐在需要性能的场景下使用MessagePack

顺便我还测试过嵌套序列化和反序列化MessagePack的表现还是比Json的更强

到此这篇关于MessagePack 和System.Text.Json 序列化和反序列化性能及对比分析的文章就介绍到这了,更多相关MessagePack 和System.Text.Json 序列化和反序列化内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: MessagePack和System.Text.Json序列化和反序列化性能及对比分析

本文链接: https://www.lsjlt.com/news/178321.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MessagePack和System.Text.Json序列化和反序列化性能及对比分析
    本博客将测试MessagePack 和System.Text.Json 序列化和反序列化性能项目文件: Program.cs代码: using BenchmarkDotNet.Ru...
    99+
    2023-01-28
    MessagePack 和System.Text.Json 序列化和反序列化 MessagePack 和System.Text.Json 序列化和反序列化
  • java原生序列化和Kryo序列化性能实例对比分析
    简介最近几年,各种新的高效序列化方式层出不穷,不断刷新序列化性能的上限,最典型的包括:专门针对Java语言的:Kryo,FST等等跨语言的:Protostuff,ProtoBuf,Thrift,Avro,MsgPack等等这些序列化方式的性...
    99+
    2023-05-31
    java kryo 序列化
  • Java对象的序列化和反序列化举例分析
    本篇内容介绍了“Java对象的序列化和反序列化举例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、什么是序列化与反序列化?  序列化:...
    99+
    2023-06-19
  • Java序列化和反序列化示例分析
    这期内容当中小编将会给大家带来有关Java序列化和反序列化示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。序列化是为了把Java对象转化为字节序列(字节流)的过程。然后深拷贝是通过对流的操作来实现的...
    99+
    2023-06-26
  • Java之对象的序列化和反序列化
    对象的序列化和反序列化1)对象序列化,就是将Object对象转换成byte序列,反之叫对象的反序列化。2)序列化流(ObjectOutputStream),是字节的过滤流—— writeObject()方法 反序列化流(Object...
    99+
    2019-09-29
    Java IO流 对象 序列化 反序列化
  • C#对Json进行序列化和反序列化
    一、Json简介 Json(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JS的一个子集。 Json采用完全独立于语言的文本格式。这使得J...
    99+
    2022-11-13
  • Jil、json序列化和反序列化库的示例分析
    这篇文章主要介绍了Jil、json序列化和反序列化库的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Jil很牛,比Newtonsof...
    99+
    2022-10-19
  • 图文浅析Java序列化和反序列化
    序列化 序列化:将对象转换为二进制序列在网络中传输或保存到磁盘 反序列化:从网络或磁盘中将二进制序列转换为对象 注意: 对象必须实现Serializable接口 对象的所有属性都要...
    99+
    2022-11-12
  • C#实现对象的序列化和反序列化
    什么是序列化和反序列化: 将对象及其状态保存起来,通常是保存到文件中,叫序列化。将文件还原为对象,叫反序列化。 序列化和反序列化的接口和帮助类: 接口IFormatterobject...
    99+
    2022-11-13
    C# 序列化对象 反序列化对象
  • C#中怎么实现JSON功能及对象的序列化和反序列化
    本篇内容主要讲解“C#中怎么实现JSON功能及对象的序列化和反序列化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#中怎么实现JSON功能及对象的序列化和反序列化”吧!Newtonsoft.J...
    99+
    2023-06-03
  • C#如何对Json进行序列化和反序列化
    这篇“C#如何对Json进行序列化和反序列化”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#如何对Json进行序列化和反序...
    99+
    2023-06-30
  • Java对象的序列化和反序列化是什么
    这篇文章主要介绍了Java对象的序列化和反序列化是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java对象的序列化和反序列化是什么文章都会有所收获,下面我们一起来看看吧。Java 对象的序列化和反序列化是...
    99+
    2023-07-06
  • 一文详解Java对象的序列化和反序列化
    目录一、什么是 Java 序列化和反序列化?二、序列化和反序列化的实现方式三、序列化和反序列化的注意事项四、序列化和反序列化的优点和缺点五、总结Java 对象的序列化和反序列化是一种...
    99+
    2023-05-16
    Java对象序列化 Java对象反序列化 Java对象序列化和反序列化
  • python对象序列化和反序列化有什么不同
    Python对象序列化和反序列化是将Python对象转换为可存储或传输的格式,以及将存储或传输的数据重新转换为Python对象的过程...
    99+
    2023-09-13
    python
  • Java中怎么实现对象的序列化和反序列化
    这篇文章给大家分享的是有关Java中怎么实现对象的序列化和反序列化的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。引言:序列化是将对象的状态信息转换为可以存储或传输的形式的过程,在...
    99+
    2022-10-18
  • Go语言对JSON数据进行序列化和反序列化
    golang中对json的序列化/反序列化操作还是比较容易的,序列化操作主要是通过encoding/json包的Marshal()方法来实现,反序列化操作主要是通过encoding/...
    99+
    2022-11-13
  • .如何理解.NET对象的XML序列化和反序列化
    .如何理解.NET对象的XML序列化和反序列化,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。.NET对象的XML序列化和反序列化是如何实现的呢?通过下面实例中的...
    99+
    2023-06-17
  • Python的pickle序列化和JSON序列化实例分析
    本文小编为大家详细介绍“Python的pickle序列化和JSON序列化实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python的pickle序列化和JSON序列化实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一...
    99+
    2023-06-30
  • .NET中XML序列化和反序列化常用类和属性小结
    目录序列化和反序列化是指什么?XmlSerializer类.NET-XML序列化和反序列化简单示例代码XmlTypeAttribute类应用示例XmlElementAttribute...
    99+
    2022-11-13
  • Java IO流对象的序列化和反序列化实例详解
    Java—IO流 对象的序列化和反序列化序列化的基本操作  1.对象序列化,就是将Object转换成byte序列,反之叫对象的反序列化。  2.序列化流(ObjectOutputStream),writeObject 方法用于将对象写入输出...
    99+
    2023-05-31
    java io流 序列化
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作