ServiceStack.Text / Newtonsoft.Json 两种json序列化性能比较

JSON序列化现在应用非常多,尤其在前后端分离的情况下,平常大多数C#下都使用Newtonsoft.Json来操作,量少的情况下,还可以忽略,但量大的情况下就要考虑使用ServiceStack.Text来操作,序列化性能差不多,反序列化性能要高一倍左右

int count = 10000;

User user = new User() { Id = 1, Name = "tyh", AddTime = DateTime.Now, Age = 15, Status = true };
string temp = String.Empty;

User user1 = new User();
string temp1 = "{\"Id\": \"2\",\"Name\": \"xxc\",\"AddTime\": \"2016-09-07 10:10:10\",\"Age\": \"15\",\"Status\": \"true\"}";

Stopwatch sw = new Stopwatch();

sw.Restart();
for (int i = 0; i < count; i++)
{
    temp = ServiceStack.Text.JsonSerializer.SerializeToString(user);
}
sw.Stop();
Response.Write("ServiceStack-Ser:" + sw.ElapsedMilliseconds + "</br>");

sw.Restart();
for (int i = 0; i < count; i++)
{
    user1 = ServiceStack.Text.JsonSerializer.DeserializeFromString<User>(temp1);
}
sw.Stop();
Response.Write("ServiceStack-Des:" + sw.ElapsedMilliseconds + "</br>");

sw.Restart();
for (int i = 0; i < count; i++)
{
    temp = Newtonsoft.Json.JsonConvert.SerializeObject(user);
}
sw.Stop();
Response.Write("Newtonsoft-Ser:" + sw.ElapsedMilliseconds + "</br>");

sw.Restart();
for (int i = 0; i < count; i++)
{
    user1 = Newtonsoft.Json.JsonConvert.DeserializeObject<User>(temp1);
}
sw.Stop();
Response.Write("Newtonsoft-Des:" + sw.ElapsedMilliseconds + "</br>");

Response.End();

以下是测试结果,我只截一个图,其他自行测试吧

时间: 2024-11-07 09:01:01

ServiceStack.Text / Newtonsoft.Json 两种json序列化性能比较的相关文章

placeholder和json两种实现登录隐藏的方法

<head> <title> placeholder和json两种实现登录隐藏的方法 </title> <script type="text/javascript"> //判断浏览器是否支持 placeholder属性 function isPlaceholder() { var input = document.createElement('input'); return 'placeholder' in input; } if (!i

XML与JSON两种数据结构比较和各自底层实现

1.XML与JSON两种数据结构的优缺点 1> XML 优点:? 格式统一, 符合标准? 容易与其他系统进行远程交互, 数据共享比较方便 ? 缺点: XML文件格式文件庞大, 格式复杂, 传输占用带宽? 服务器端和客户端都需要花费大量代码来解析XML, 不论服务器端和客户端代码变的异常复杂和不容易维护 客户端不同,浏览器之间解析XML的方式不一致, 需要重复编写很多代码? 服务器端 和 客户端 解析XML花费资源和时间 2> JSON 优点:? 数据格式比较简单, 易于读写, 格式都是压缩的,

最常用的两种C++序列化方案的使用心得(protobuf和boost serialization)

导读 1. 什么是序列化? 2. 为什么要序列化?好处在哪里? 3. C++对象序列化的四种方法 4. 最常用的两种序列化方案使用心得 正文 1. 什么是序列化? 程序员在编写应用程序的时候往往需要将程序的某些数据存储在内存中,然后将其写入某个文件或是将它传输到网络中的另一台计算机上以实现通讯.这个将 程序数据转化成能被存储并传输的格式的过程被称为"序列化"(Serialization),而它的逆过程则可被称为"反序列化" (Deserialization). 简单

json两种结构

1.对象:对象在js中表示为"{}"括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字.字符串.数组.对象几种: 名称\值对 按照最简单的形式,可以用下面这样的 JSON 表示"名称 / 值对": 1 {"firstName":"Brett"

lua中,两种json和table互转方法的效率比较

lua中json和table的互转,是我们在平时开发过程中经常用到的.比如: 在用lua编写的服务器中,如果客户端发送json格式的数据,那么在lua处理业务逻辑的时候,必然需要转换成lua自己的数据结构,如table.此时,就会用到table和json格式的互转. 在用lua编写的服务器中,如果我们通过redis来存储数据,由于redis中不存在table这种数据结构,因此,我们可以选择将table转换成json字符串来进行存储.在数据的存取过程中,也会用到table和json格式的互转. 以

Json两种解析方式

JSON数据解析的有点在于他的体积小,在网络上传输的时候可以更省流量,所以使用越来越广泛,下面介绍使用JsonObject和JsonArray的两种方式解析Json数据. 使用以上两种方式解析json均需要依赖json-lib.jar开发包使用依赖包 1.JsonObject 使用JsonObject解析只有一条数据的json是非常方便的例如:"{\"name\":\"zhangsan\",\"password\":\"zha

第十五讲.数据解析(XML与JSON两种数据解析)

一.XML数据解析 1.SAX:Simple API for XML.基于事件驱动的解析方式,逐行解析数据.(采用协议回调机制) NSXMLParser的解析方法: 1 #import "ViewController.h" 2 #import "Model.h" 3 4 @interface ViewController ()<NSXMLParserDelegate> 5 6 @property(nonatomic,strong)UITableView

理解json两种结构:数组和对象

Json是一种异常简单易懂的数据格式,关于json的规定,仅仅如下而已: 1) 并列的数据之间用逗号(", ")分隔. 2) 映射用冒号(": ")表示. 3) 并列数据的集合(数组)用方括号("[]")表示. 4) 映射的集合(对象)用大括号("{}")表示. 1. $arr = array(111,'aaa','bbb'); $arr1 = array( 'a' => 'aaa', 'b' => 222 );

最经常使用的两种C++序列化方案的使用心得(protobuf和boost serialization)

导读 1. 什么是序列化? 2. 为什么要序列化?优点在哪里? 3. C++对象序列化的四种方法 4. 最经常使用的两种序列化方案使用心得 正文 1. 什么是序列化? 程序猿在编写应用程序的时候往往须要将程序的某些数据存储在内存中,然后将其写入某个文件或是将它传输到网络中的还有一台计算机上以实现通讯.这个将程序数据转化成能被存储并传输的格式的过程被称为"序列化"(Serialization),而它的逆过程则可被称为"反序列化"(Deserialization). 简