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;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading;
using System.Threading.Tasks; namespace ConsoleApp390
{
class Program
{
static void Main(string[] args)
{
SerializationDemo();
} static void SerializationDemo()
{
List<SalesOrderDetail> dataList = GetList();
bool IsBusy = false;
for(int i=;i<;i++)
{
if(!IsBusy)
{
IsBusy = true; Task task = Task.Run(() =>
{
TestCostDemo(dataList);
});
task.Wait(); Console.WriteLine($"Task {i} has finished!");
IsBusy = false;
}
}
}
static void TestCostDemo(List<SalesOrderDetail> dataList)
{
StringBuilder msgBuilder = new StringBuilder();
Stopwatch sw = new Stopwatch(); sw.Start();
Console.WriteLine($"BinaryFormatterDemo started at {DateTime.Now.ToString("yyyyMMddHHmmssffff")}");
BinaryFormatterDemo<SalesOrderDetail>(dataList);
sw.Stop();
Console.WriteLine($"BinaryFormatterDemo stopped at {DateTime.Now.ToString("yyyyMMddHHmmssffff")}");
msgBuilder.Append($"In .net 4.8,now {DateTime.Now.ToString("yyyyMMddHHmmssffff")} BinaryFormatterDemo cost {sw.ElapsedMilliseconds} milliseconds."); sw.Restart();
Console.WriteLine($"NewtonJsonDemo started at {DateTime.Now.ToString("yyyyMMddHHmmssffff")}");
NewtonJsonDemo<SalesOrderDetail>(dataList);
sw.Stop();
Console.WriteLine($"NewtonJsonDemo stopped at {DateTime.Now.ToString("yyyyMMddHHmmssffff")}");
msgBuilder.Append($"NewtonJsonDemo cost {sw.ElapsedMilliseconds} milliseconds."); sw.Restart();
Console.WriteLine($"JsonSerializerDemo started at {DateTime.Now.ToString("yyyyMMddHHmmssffff")}");
JsonSerializerDemo<SalesOrderDetail>(dataList);
sw.Stop();
Console.WriteLine($"JsonSerializerDemo stopped at {DateTime.Now.ToString("yyyyMMddHHmmssffff")}");
msgBuilder.AppendLine($"JsonSerializerDemo cost {sw.ElapsedMilliseconds} milliseconds.\n\n");
string msg = msgBuilder.ToString();
PrintMsg(msg);
} private static void PrintMsg(string msg)
{
Console.WriteLine(msg);
Debug.WriteLine(msg);
LogResult(msg);
} static List<SalesOrderDetail> GetList()
{
using (AdventureWorks2017Entities db = new AdventureWorks2017Entities())
{
List<SalesOrderDetail> dataList = new List<SalesOrderDetail>(db.SalesOrderDetails);
return dataList;
}
}
static void BinaryFormatterDemo<T>(List<T> dataList)
{
using (FileStream fs = new FileStream($"{Guid.NewGuid().ToString().Substring(0, 6)}BinFormatter.dat", FileMode.Create))
{
BinaryFormatter binFormatter = new BinaryFormatter();
try
{
binFormatter.Serialize(fs, dataList);
}
catch (SerializationException e)
{
Console.WriteLine($"BinaryFormatter serialize ex:{e.StackTrace}");
}
}
}
static void NewtonJsonDemo<T>(List<T> dataList)
{
try
{
string jsonString = JsonConvert.SerializeObject(dataList);
}
catch (SerializationException ex)
{
Console.WriteLine($"NewtonJson serialization ex :{ex.StackTrace}");
}
}
static void JsonSerializerDemo<T>(List<T> dataList)
{
try
{
string msJsonSerializerString = System.Text.Json.JsonSerializer.Serialize(dataList);
}
catch (SerializationException ex)
{
Console.WriteLine($"System.Text.Json.JsonSerializer ex:{ex.StackTrace}");
}
}
static void LogResult(string msg)
{
string logPath = @"log.txt";
using (StreamWriter logWriter = new StreamWriter(logPath, true, Encoding.UTF8))
{
logWriter.WriteLine(msg);
}
}
}
}
I had validated in .net 4.8 NewtonSoft.Json's speed rank 1st,System.Text.Json.JsonSerializer.Serialize 2nd,and BinaryFormatter 3rd.
In .net 4.8,now BinaryFormatterDemo cost milliseconds.NewtonJsonDemo cost milliseconds.JsonSerializerDemo cost milliseconds. In .net 4.8,now BinaryFormatterDemo cost milliseconds.NewtonJsonDemo cost milliseconds.JsonSerializerDemo cost milliseconds. In .net 4.8,now BinaryFormatterDemo cost milliseconds.NewtonJsonDemo cost milliseconds.JsonSerializerDemo cost milliseconds. In .net 4.8,now BinaryFormatterDemo cost milliseconds.NewtonJsonDemo cost milliseconds.JsonSerializerDemo cost milliseconds. In .net 4.8,now BinaryFormatterDemo cost milliseconds.NewtonJsonDemo cost milliseconds.JsonSerializerDemo cost milliseconds. In .net 4.8,now BinaryFormatterDemo cost milliseconds.NewtonJsonDemo cost milliseconds.JsonSerializerDemo cost milliseconds. In .net 4.8,now BinaryFormatterDemo cost milliseconds.NewtonJsonDemo cost milliseconds.JsonSerializerDemo cost milliseconds. In .net 4.8,now BinaryFormatterDemo cost milliseconds.NewtonJsonDemo cost milliseconds.JsonSerializerDemo cost milliseconds. In .net 4.8,now BinaryFormatterDemo cost milliseconds.NewtonJsonDemo cost milliseconds.JsonSerializerDemo cost milliseconds. In .net 4.8,now BinaryFormatterDemo cost milliseconds.NewtonJsonDemo cost milliseconds.JsonSerializerDemo cost milliseconds.
In .net 4.8,calculate the time cost of serialization in BinaryFormatter,NewtonSoft.json,and System.Text.Json.JsonSerializer.Serialize的更多相关文章
- 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 ...
- 在Hadoop-3.1.2上安装HBase-2.2.1
目录 目录 1 1. 前言 3 2. 缩略语 3 3. 安装规划 3 3.1. 用户规划 3 3.2. 目录规划 4 4. 相关端口 4 5. 下载安装包 4 6. 修改配置文件 5 6.1. 修改策 ...
- ASP.NET Core 2.0升级到3.0的变化和问题
前言 在.NET Core 2.0发布的时候,博主也趁热使用ASP.NET Core 2.0写了一个独立的博客网站,现如今恰逢.NET Core 3.0发布之际,于是将该网站进行了升级. 下面就记录升 ...
- .NET 6 全新指标 System.Diagnostics.Metrics 介绍
前言 工友们, .NET 6 Preview 7 已经在8月10号发布了, 除了众多的功能更新和性能改进之外, 在 preview 7 版本中, 也新增了全新的指标API, System.Diagno ...
- (转载)SQL Reporting Services (Expression Examples)
https://msdn.microsoft.com/en-us/library/ms157328(v=SQL.100).aspx Expressions are used frequently in ...
- MOTION-MATCHING IN UBISOFT’S FOR HONOR翻译
http://www.gameanim.com/2016/05/03/motion-matching-ubisofts-honor/ Introducing For Honor with a vide ...
- HDOJ 1690
Bus System Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- Jquery easyui datagrid 导出Excel
From:http://www.cnblogs.com/weiqt/articles/4022399.html datagrid的扩展方法,用于将当前的数据生成excel需要的内容. 1 <sc ...
- Codeforces Round #290 (Div. 2) D. Fox And Jumping dp
D. Fox And Jumping 题目连接: http://codeforces.com/contest/510/problem/D Description Fox Ciel is playing ...
随机推荐
- PHP函数CURL分别以GET、POST方式请求HTTPS协议接口api
1.curl以GET方式请求https协议接口 function curl_get_https($url){ $curl = curl_init(); // 启动一个CURL会话 curl_setop ...
- 历史上的今天接口api
ip地址查询 www.ipip5.com 为大家提供历史上的今天接口api,提供txt和json两种返回格式. 1.txt文本格式 http://www.ipip5.com/today/api.p ...
- GHOST CMS - 创建自定义主页 Creating a custom home page
创建自定义主页 Creating a custom home page 为你的网站创建一个自定义的主页是一个让你从人群中脱颖而出的好方法,并把你自己独特的印记存放在你的网上.本教程向您展示了如何在Gh ...
- VUE项目Eslint报错
前言:eslint很恶心的一个地方:你是否被各种语法报错一个标点符号,一个空格,一个回车......各种报错折磨着你! 加上编辑器 VS Code 的自动格式化稳稳的和Eslint冲突报错. 对此,我 ...
- Androi O Automotive 介绍
最近由于工作需要对android o 中的 automotive源码进行了深入的学习,现总结如下: Android O Vehicle之架构介绍 Android O Vehicle之Car Servi ...
- Leetcode题解 - 树、DFS部分简单题目代码+思路(700、671、653、965、547、473、46)
700. 二叉搜索树中的搜索 - 树 给定二叉搜索树(BST)的根节点和一个值. 你需要在BST中找到节点值等于给定值的节点. 返回以该节点为根的子树. 如果节点不存在,则返回 NULL. 思路: 二 ...
- 痞子衡嵌入式:高性能MCU之人工智能物联网应用开发那些事 - 索引
大家好,我是痞子衡,是正经搞技术的痞子.本系列痞子衡给大家介绍的是高性能MCU之人工智能物联网应用开发相关知识. 恩智浦半导体2017年开始推出的i.MX RT系列跨界处理器,这种高性能MCU给嵌入式 ...
- Asp.net Core3.0 跨域配置
原文:http://www.zilaohu.cn/Jie/Detail_Jie?ID=78840a04-55b8-4988-80b2-f964fd822d63 下面配置后:被拒绝的域请求后,可以进入方 ...
- variable '' of type '' referenced from scope '', but it is not defined 异常解决方法
最近在做一个功能,通过拼接lamdba表达试来实现的功能,但测试时总是出现一个错误,如下图所示,网上也找不到答案,差点都放弃了.. 如上图图所示,我是想通过一个lamdba表达式(上图的IdField ...
- MySQL的多表联查
1.内连接 规则:返回两个表的公共记录 语法: -- 语法一 select * from 表1 inner join 表2 on 表1.公共字段=表2.公共字段 -- 语法 ...