搜索

查看: 3111|回复: 11

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

[复制链接]
发表于 2023-5-4 11:26:37 | 显示全部楼层 |阅读模式
Editor 2023-5-4 11:26:37 3111 11 看全部
本博客将测试MessagePack 和System.Text.Json 序列化和反序列化性能
项目文件:

2023012309565321.png

2023012309565321.png


Program.cs代码:
using BenchmarkDotNet.Running;
using Demo;
var summary = BenchmarkRunner.Run();
SerializeTest.cs代码:
using BenchmarkDotNet.Attributes;
using MessagePack;
using System.Text.Json;
namespace Demo
{
    [MemoryDiagnoser, RankColumn, MaxColumn,MinColumn]
    public class SerializeTest
    {
        public List TestDatas = new();
        public byte[] Pack;
        public byte[] Json;

        public SerializeTest()
        {
            for (int i = 0; i  GetMessagePack()
        {
            return MessagePackSerializer.Deserialize>(Pack, MessagePack.Resolvers.ContractlessStandardResolver.Options);
        }
        [Benchmark]
        public List? TextJson()
        {
            return JsonSerializer.Deserialize>(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";
        }
    }
}
然后我们将使用基准测试开始我们的性能测试:

2023012309565422.png

2023012309565422.png


然后测试结束:

2023012309565423.jpg

2023012309565423.jpg


我们看到我们的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 序列化和反序列化内容请搜索知鸟论坛以前的文章或继续浏览下面的相关文章希望大家以后多多支持知鸟论坛
回复

使用道具 举报

发表于 2023-6-28 20:12:38 | 显示全部楼层
向往草原403 2023-6-28 20:12:38 看全部
楼主发贴辛苦了,谢谢楼主分享!我觉得知鸟论坛是注册对了!
回复

使用道具 举报

发表于 2023-6-29 00:32:06 | 显示全部楼层
123456865 2023-6-29 00:32:06 看全部
楼主,大恩不言谢了!知鸟论坛是最棒的!
回复

使用道具 举报

发表于 2023-6-29 17:35:26 | 显示全部楼层
落败的青春阳落s 2023-6-29 17:35:26 看全部
楼主,大恩不言谢了!知鸟论坛是最棒的!
回复

使用道具 举报

发表于 2023-6-29 22:12:58 | 显示全部楼层
ffycxyw2274436 2023-6-29 22:12:58 看全部
楼主,大恩不言谢了!知鸟论坛是最棒的!
回复

使用道具 举报

发表于 2023-6-30 01:07:45 | 显示全部楼层
井底燕雀傥 2023-6-30 01:07:45 看全部
论坛不能没有像楼主这样的人才啊!我会一直支持知鸟论坛
回复

使用道具 举报

发表于 2023-6-30 04:28:26 | 显示全部楼层
123456833 2023-6-30 04:28:26 看全部
楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
回复

使用道具 举报

发表于 2023-6-30 18:32:08 | 显示全部楼层
永远就三年疗 2023-6-30 18:32:08 看全部
楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
回复

使用道具 举报

发表于 2023-6-30 19:05:52 | 显示全部楼层
音乐之家1 2023-6-30 19:05:52 看全部
楼主,大恩不言谢了!知鸟论坛是最棒的!
回复

使用道具 举报

发表于 2023-7-4 09:21:26 | 显示全部楼层
123456819 2023-7-4 09:21:26 看全部
这东西我收了!谢谢楼主!知鸟论坛真好!
回复

使用道具 举报

  • 您可能感兴趣
点击右侧快捷回复 【请勿灌水】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 返回列表

RSS订阅| SiteMap| 小黑屋| 知鸟论坛
联系邮箱E-mail:zniao@foxmail.com
快速回复 返回顶部 返回列表