欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

本博客將測試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";

        }
    }
}

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

然后測試結(jié)束:

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

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

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

相關(guān)文章

  • DataGridView展開與收縮功能實現(xiàn)

    DataGridView展開與收縮功能實現(xiàn)

    我們今天將要講到DataGridView之行的展開與收縮,包括功能是如何實現(xiàn)的,感興趣的小伙伴們可以參考一下
    2015-09-09
  • 密碼綁定至密碼文本框中(TextMode設(shè)為Password)

    密碼綁定至密碼文本框中(TextMode設(shè)為Password)

    一般情況之下TextBox的TextMode設(shè)為Password話,我們想在后臺(.cs)綁定一個值至此文本框,是無法實現(xiàn)的,如果一定要綁定值的話,該如何實現(xiàn)呢?,本文將告訴你實現(xiàn)方法,感興趣的朋友可以參考下
    2013-01-01
  • 如何處理ASP.NET Core中HTML5客戶端路由回退的問題

    如何處理ASP.NET Core中HTML5客戶端路由回退的問題

    這篇文章主要給大家介紹了關(guān)于如何處理ASP.NET Core中HTML5客戶端路由回退的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • IE10下Gridview后臺設(shè)置行高不起作用解決方法

    IE10下Gridview后臺設(shè)置行高不起作用解決方法

    GridView1.HeaderStyle.Height=17發(fā)現(xiàn)在IE10 中不起作用,經(jīng)過反復(fù)測試修改為e.Row.Cells[0].Height=17即可解決問題,有類似問題的朋友可以參考下哈
    2013-04-04
  • 剖析Asp.Net Web API路由系統(tǒng)---WebHost部署方式

    剖析Asp.Net Web API路由系統(tǒng)---WebHost部署方式

    這篇文章主要介紹了剖析Asp.Net Web API路由系統(tǒng)---WebHost部署方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-02-02
  • Asp.net core利用IIS在windows上進行托管步驟詳解

    Asp.net core利用IIS在windows上進行托管步驟詳解

    這篇文章主要給大家介紹了關(guān)于Asp.net core利用IIS在windows上進行托管步驟的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • .net下Quartz.Net的使用方法

    .net下Quartz.Net的使用方法

    這篇文章主要為大家詳細(xì)介紹了.net下Quartz.Net的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • C# 數(shù)組查找與排序?qū)崿F(xiàn)代碼

    C# 數(shù)組查找與排序?qū)崿F(xiàn)代碼

    數(shù)組查找對象的方法一種是查找對象,一種是查找值
    2009-10-10
  • asp.net XML文件操作實現(xiàn)代碼

    asp.net XML文件操作實現(xiàn)代碼

    這幾天在項目中用到了XML文件配置存儲一些基本信息,如:參數(shù)、表格等一些信息存儲。由于記錄不是很多,所以用此文件來代替數(shù)據(jù)庫中設(shè)計的表結(jié)構(gòu)。
    2009-12-12
  • Linux(Ubuntu)下搭建ASP.NET Core環(huán)境

    Linux(Ubuntu)下搭建ASP.NET Core環(huán)境

    本文給大家介紹的是無需安裝mono,在Linux(Ubuntu14.04.4 LTS)下搭建ASP.NET Core環(huán)境 繼續(xù).NET跨平臺,希望對大家能夠有所幫助。
    2016-07-07

最新評論