最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MessagePack 和System.Text.Json 序列化和反序列化性能及對(duì)比分析

 更新時(shí)間:2023年01月23日 09:55:57   作者:token  
這篇文章主要介紹了MessagePack 和System.Text.Json 序列化和反序列化性能及對(duì)比分析,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下

本博客將測(cè)試MessagePack 和System.Text.Json 序列化和反序列化性能
項(xiàng)目文件:

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";

        }
    }
}

然后我們將使用基準(zhǔn)測(cè)試開(kāi)始我們的性能測(cè)試:

然后測(cè)試結(jié)束:

我們看到我們的MessagePack的性能在序列化Byte[]的表現(xiàn)對(duì)比TextJson上不光是性能比TextJson的更快,內(nèi)存占用也更小
然后是反序列化對(duì)象 MessagePack對(duì)比TextJson 性能和內(nèi)存占用都更強(qiáng)
在使用MessagePack的前提上我配置了MessagePack的配置 MessagePack.Resolvers.ContractlessStandardResolver.Options
如果不加 MessagePack.Resolvers.ContractlessStandardResolver.Options 性能可能并不比Json更快更好 啟用了配置以后模型不需要添加特性 并且性能更快
在需要更快性能的場(chǎng)景MessagePack更適合 并且傳輸?shù)捏w積更小,所以非常推薦在需要性能的場(chǎng)景下使用MessagePack

順便我還測(cè)試過(guò)嵌套序列化和反序列化MessagePack的表現(xiàn)還是比Json的更強(qiáng)

到此這篇關(guān)于MessagePack 和System.Text.Json 序列化和反序列化性能及對(duì)比分析的文章就介紹到這了,更多相關(guān)MessagePack 和System.Text.Json 序列化和反序列化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

镇雄县| 栖霞市| 四子王旗| 花莲县| 西平县| 东平县| 纳雍县| 苍梧县| 伽师县| 仙游县| 上林县| 天水市| 洮南市| 盐城市| 博野县| 绵竹市| 青川县| 花垣县| 海南省| 阆中市| 鄂托克旗| 温宿县| 图木舒克市| 清水县| 宁陕县| 衡阳县| 饶平县| 深圳市| 兰坪| 杭锦旗| 东乌珠穆沁旗| 长海县| 乳山市| 长白| 都江堰市| 石屏县| 杭锦旗| 秦安县| 拜泉县| 甘肃省| 景东|