System.Web.Helpers.Json 与 Newtonsoft.Json 的性能对比

这两年一直在用razor,习惯了它的方便性,有些功能也自然而然用了自带的,如用System.Web.Helpers.Json 处理json格式的数据。

之前没处理过大集合的场景,最多一次处理二三十条记录,没有发生明显的性能方面问题。

上周,有个需求需要每天在两台服务器间传递数据(大约2000-3000条)。阿里云的rds出于安全方面的考虑,被"阉割"了不少功能,不能用连接服务器,也不能用openrowset/openquery/opendatasource等。

手工导入倒出数据又繁琐,而且手机号码还会被excel转成科学计数,每次还得手动调回来,一不小心忘了,还得重新操作一遍。

最后在a服务器做了个查询页search,用System.Web.Helpers.Json.Encode(rows) 将查询结果转化成json格式输出。
在b服务器,做了个请求页getdata,通过WebClient请求a服务器的查询页,再用System.Web.Helpers.Json.Decod(str) 解析数据,最后用sqlbulkcopy保存到数据库里。

写完一运行b服务器的请求页getdata,内心是崩溃的:一个大白页,等了几十s后,才输出了结果。

用浏览器的调试功能跟踪了下,52s!一个简单的数据导入/导出的功能,不应该啊!

用stopwatch 分别在getdata页的 WebClient请求,json数据解析,sqlbulkcopy数据保存三个地方计时。
26xxx,26xxx,4xx (毫秒) 具体的数字记不清了。

第一感觉,时间浪费在json数据的转换上了!

用Newtonsoft.Json  代替了 System.Web.Helpers.Json,一运行,瞬间就输入了结果!json数据的处理时间从26xxx 降至了6xx。对比很明显!!!
(也可能是我用System.Web.Helpers.Json的姿势不对,欢迎拍砖!)

再看使用对比,在序列化的时候,两者一样方便;在反序列化的时候,System.Web.Helpers.Json方便些。

 

System.Web.Helpers.Json.Encode(rows);
Newtonsoft.Json.JsonConvert.SerializeObject(rows);

List<JObject> jsons =JsonConvert.DeserializeObject<List<JObject>>(content);
foreach (JObject row in jsons)
{
    //row.Property("name").Value.ToString()
}

List<dynamic> jsons2 = System.Web.Helpers.Json.Decode(content);
foreach (var row in jsons2)
{
   //row.name
}

 

转载于:https://www.cnblogs.com/dahuiyang/p/10965920.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值