微软的序列化反序列化组件出来已有好几年了,刚出来的时候各种吐槽。最近在优化代码,比较了一下微软的Serialize和Newtonsoft的SerializeObject,感觉大部分场景下可以用微软的序列化组件了,Newtonsoft第三方可能被我放弃掉。测试有交换顺序,也有多次测试。当然如果加上JsonSerializerOptions,而且全部配置起来性能就会有所下降,毕竟这么多配置在这呢,但是这样也会更加灵活。

初步结论,在使用微软默认配置下数据量大序列化速度比Newtonsoft快了一倍。

  1. 1 using Newtonsoft.Json;
  2. 2 using System;
  3. 3 using System.Diagnostics;
  4. 4 namespace JsonTest
  5. 5 {
  6. 6 internal class Program
  7. 7 {
  8. 8 static void Main(string[] args)
  9. 9 {
  10. 10 var count = 10_000;
  11. 11 var elapsedMilliseconds = Serialize(count, () =>
  12. 12 {
  13. 13 JsonConvert.SerializeObject(new WeatherForecast
  14. 14 {
  15. 15 Date = DateTime.Now,
  16. 16 Summary = "Hot",
  17. 17 TemperatureCelsius = 88
  18. 18 });
  19. 19 });
  20. 20 Console.WriteLine($"serialize object count:{count}, newtonsoft used: {elapsedMilliseconds} seconds");
  21. 21 elapsedMilliseconds = Serialize(count, () =>
  22. 22 {
  23. 23 System.Text.Json.JsonSerializer.Serialize(new WeatherForecast
  24. 24 {
  25. 25 Date = DateTime.Now,
  26. 26 Summary = "Hot",
  27. 27 TemperatureCelsius = 88
  28. 28 });
  29. 29 });
  30. 30 Console.WriteLine($"serialize object count:{count}, textjson used : {elapsedMilliseconds} seconds");
  31. 31 Console.WriteLine("***************************************************");
  32. 32 count = 10_000_000;
  33. 33 elapsedMilliseconds = Serialize(count, () =>
  34. 34 {
  35. 35 JsonConvert.SerializeObject(new WeatherForecast
  36. 36 {
  37. 37 Date = DateTime.Now,
  38. 38 Summary = "Hot",
  39. 39 TemperatureCelsius = 88
  40. 40 });
  41. 41 });
  42. 42 Console.WriteLine($"serialize object count:{count}, newtonsoft used: {elapsedMilliseconds} seconds");
  43. 43 elapsedMilliseconds = Serialize(count, () =>
  44. 44 {
  45. 45 System.Text.Json.JsonSerializer.Serialize(new WeatherForecast
  46. 46 {
  47. 47 Date = DateTime.Now,
  48. 48 Summary = "Hot",
  49. 49 TemperatureCelsius = 88
  50. 50 });
  51. 51 });
  52. 52 Console.WriteLine($"serialize object count:{count}, textjson used : {elapsedMilliseconds} seconds");
  53. 53 Console.ReadKey();
  54. 54 /*
  55. 55 serialize object count:10000, newtonsoft used: 288 seconds
  56. 56 serialize object count:10000, textjson used : 45 seconds
  57. 57 ***************************************************
  58. 58 serialize object count:10000000, newtonsoft used: 10324 seconds
  59. 59 serialize object count:10000000, textjson used : 5681 seconds
  60. 60 */
  61. 61 }
  62. 62
  63. 63 static long Serialize(int count,Action action)
  64. 64 {
  65. 65 Stopwatch stopwatch = Stopwatch.StartNew();
  66. 66 for(int i = count; i > 0; i--)
  67. 67 {
  68. 68 action();
  69. 69 }
  70. 70 stopwatch.Stop();
  71. 71 var result = stopwatch.ElapsedMilliseconds;
  72. 72 stopwatch.Reset();
  73. 73 return result;
  74. 74 }
  75. 75 }
  76. 76 internal class WeatherForecast
  77. 77 {
  78. 78 public DateTimeOffset Date { get; set; }
  79. 79 public int TemperatureCelsius { get; set; }
  80. 80 public string Summary { get; set; }
  81. 81 }
  82. 82 }

微软文档里面有各种介绍,不再详述!

从 Newtonsoft.Json 迁移到 System.Text.Json - .NET | Microsoft Docs

微软的Serialize和Newtonsoft的SerializeObject比较的更多相关文章

  1. 自定义$('#form').serialize() var params = $('#xxx_form').serializeObject();

    //注意:获取之前 $("#id").removeAttr("disabled"); $.fn.serializeObject = function () { ...

  2. Azure 元数据服务:适用于 Windows VM 的计划事件(预览)

    计划事件是 Azure 元数据服务中的其中一个子服务. 它负责显示有关即将发生的事件(例如,重新启动)的信息,使应用程序可以为其做准备并限制中断. 它可用于所有 Azure 虚拟机类型(包括 PaaS ...

  3. 微软自带的Serialization和Newtonsoft简单测试

    刚刚对这两个进行了一下小小的测试 发现 当转换的内容少的时候  微软自带的比Newtonsoft速度要快一些,内容多的时候反之,当内容多到一定量的时候微软自带的就不能转换了,需要修改一下MaxJson ...

  4. C#.NET序列化XML、JSON、二进制微软自带DLL与newtonsoft(json.net)

    序列化是将对象转换成另一种格式(XML.json.二进制byte[]) JSON序列化 .NET中有三种常用的JSON序列化的类,分别是: Newtonsoft.Json.JsonConvert类(推 ...

  5. In .net 4.8,calculate the time cost of serialization in BinaryFormatter,NewtonSoft.json,and System.Text.Json.JsonSerializer.Serialize

    using ConsoleApp390.Model; using Newtonsoft.Json; using System; using System.Collections.Generic; us ...

  6. C# Serialization performance in System.Runtime.Serialization.Formatters.Binary.BinaryFormatter,Newtonsoft.Json.JsonConvert and System.Text.Json.JsonSerializer.Serialize

    In .net core 3.0 using System;using System.Collections.Generic;using System.Collections;using System ...

  7. Newtonsoft.Json序列化和反序列之javascriptConvert.SerializeObject,DeserializeObject,JsonWriter,JsonReader

    这里下载:http://www.newtonsoft.com/products/json/安装:   1.解压下载文件,得到Newtonsoft.Json.dll   2.在项目中添加引用.. jav ...

  8. @Html.Raw() 与Newtonsoft.Json.JsonConvert.SerializeObject()

    一.后台 ViewBag.TypeList = typeList; 二.前台C# @{     var typeListFirst = ViewBag.TypeList;} 三.前台js中 var t ...

  9. .NET中的Newtonsoft.Json.JsonConvert.SerializeObject(string a)

    1.將string a 序列化為Json格式: 2.使用條件:將Newtonsoft.Json.dll作為引用添加到項目中.下载地址在这:http://json.codeplex.com/

随机推荐

  1. 删除列Table.RemoveColumns(Power Query 之 M 语言)

    数据源: "姓名""基数""个人比例""个人缴纳""公司比例""公司缴纳"&qu ...

  2. 资源工作表中与资源有关的操作(Project)

    <Project2016 企业项目管理实践>张会斌 董方好 编著 这个内容,我需要专门写一篇吗? 不写吧,好像对不起我那股学习的劲:写吧,实在是--一句话就够了:所有与任务有关的新建.修改 ...

  3. Nacos——注册中心

    目录 1.什么是nacos 2.使用--依赖+配置文件 3.Nacos服务分级存储模型 4.服务跨集群调用问题 5.服务集群属性--配置服务集群 6. Nacos-NacosRule负载均衡 7.根据 ...

  4. 用setTimeout实现setInterval

    timerFun(); function timerFun() { console.log("实现操作部分") let timer = setTimeout(function () ...

  5. Interviewe(hdu3486)

    Interviewe Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  6. 【剑指Offer】数据流中的中位数 解题报告(Python)

    [剑指Offer]数据流中的中位数 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews ...

  7. 【剑指Offer】序列化二叉树 解题报告(Python)

    [剑指Offer]序列化二叉树 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目 ...

  8. 1188 最大公约数之和 V2

    1188 最大公约数之和 V2 题目来源: UVA 基准时间限制:2 秒 空间限制:262144 KB  给出一个数N,输出小于等于N的所有数,两两之间的最大公约数之和.       相当于计算这段程 ...

  9. 【Java笔记】zipInputStream使用注意

    报错: MALFORMED java.lang.IllegalArgumentException 1. 记得使cry catch 方便找异常的位置 2. 使用zipInputStream打开的zip文 ...

  10. OverFeat:Integrated Recognition, Localization and Detection using Convolutional Networks

    目录 概 主要内容 Sermanet P., Eigen D., Zhang X., Mathieu M., Fergus R., LeCun Y. OverFeat:integrated recog ...