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 ...
随机推荐
- AWS re:Invent 2019参会有感
感谢AWS方面的邀请,以及公司给予的机会,近期有幸赴美参与了享有盛名的AWS re:Invent大会.会议期间自己还算勤勉,参加了尽可能多的session.现笔者也已回到国内,交个作业,写一篇短文作为 ...
- 一段简单的关于字符串的 Java 代码竟考察了这么多东西
下面的代码运行结果是什么?解释一下为什么会有这些差异. String s1 = "hello";String s2 = s1 + ",world";String ...
- 《Dotnet9》建站-本站使用的什么主题?
时间如流水,只能流去不流回! 点赞再看,养成习惯,这是您给我创作的动力! 本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform.W ...
- flink time and watermark
流处理中时间本质上就是一个普通的递增字段(long型,自1970年算起的微秒数),不一定真的表示时间. watermark只是应对乱序的办法之一,大多是启发式的,在延迟和完整性之间抉择.(如果没有延迟 ...
- Elasticsearch 监控指标解析
1.集群监控 集群监控主要包括两个方面的内容,分别是集群健康情况和集群的运行状态. 集群健康状态可以通过以下api获取: http://ip:9200/_cluster/health?pretty 关 ...
- Spring Boot微服务电商项目开发实战 --- 分布式开发要避的那些坑
今天已经进入第七讲了,整个微服务架构的搭建工作也基本完成.那到目前为止究竟使用了那些技术及实现了什么功能呢?我们先回顾一下. 使用的技术:SpringBoot.Dubbo.Zookeeper.Redi ...
- 详解EMC测试国家标准GB/T 17626
电波暗室,用于模拟开阔场,同时用于辐射无线电骚扰(EMI)和辐射敏感度(EMS)测量的密闭屏蔽室. 来源:http://gememc.com/upload/201712/201712010930227 ...
- UiPath Platform注册 登录 及 访问 Orchestrator
相关步骤: 1.https://platform.uipath.com/portal_/cloudrpa 注册 及 登录 2. Login后 通过Services 连接 访问 UiPath Orche ...
- SVN服务器和客户端的下载和安装
一.SVN服务器VisualSVN下载和安装 当前版本:4.1.3下载地址:https://www.visualsvn.com/server/download/下载下来的文件:VisualSVN-Se ...
- Java 包(package)的概念及实例
包的作用 1.把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用. 2.如同文件夹一样,包也采用了树形目录的存储方式.同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调 ...