【问题标题】:Best/Fastest way to serialize a JSON object for JQGrid为 JQGrid 序列化 JSON 对象的最佳/最快方法
【发布时间】:2013-10-15 21:44:01
【问题描述】:

我正在使用 javascript 库 JQGrid 来显示结果列表。我想尽我所能挤出最后一点性能提升。我正在使用 JQGrid url 属性来调用 ASP.NET MVC ActionMethod。

在操作方法中,我进行查询,然后加载一个具有 3 个 int 属性和 1 个集合属性的匿名对象:

public JsonResult GetDataRows(int dataId)
{
    IEnumerable myDataCollection = linqDB.DataRows.Where(i => i == dataId);
    var data = new
    {
        page = 1,
        total = 1,
        records = 3,
        rows = myDataCollection.ToList();
    };
    return Json(data, JsonRequestBehavior.AllowGet);
}

MVC Json 方法是将此数据序列化回 javascript 客户端脚本的最快方法吗?有没有更快的东西。

【问题讨论】:

  • 它是否足够快?那是; 是否存在性能瓶颈? 这里介绍的 JSON 序列化的瓶颈吗?在有某种形式的测量和(失败的)要求之前,我尽量不要“优化”。如果有很多数据,也许有某种分页技术?
  • 勉强。由于项目经过十多年的多次迭代发展,有些事情我无法改变。我是根据社区经验来询问哪个是最快的序列化。
  • 没有数字(阅读:没有分析)没有性能问题。首先,通过使用分析找到问题 - 这将说明瓶颈在哪里/是什么。如果没有发现问题,请继续。如果有问题,但它在其他地方,请改为修复它。如果设置了分析,那么测试不同的序列化实现和性能将是微不足道的。分析时,请确保在实际条件和负载下进行测试。

标签: asp.net-mvc json asp.net-mvc-3 asp.net-mvc-4 jqgrid


【解决方案1】:

我查看了 MVC 框架的底层,看起来 JSON 帮助器背后是 JavascriptSerializer。在进行一些测试时,我达到了最大有效载荷。

因为我们已经有了 Newtonsoft JSON.NET 库,所以我使用它的序列化程序添加了一个自定义 ActionResult。只是使用它来写入浏览器,而不是使用它来序列化任何 JSON 输入......但就是这样。这是使用替代序列化程序的 ActionResult 覆盖的链接。

Json.NET ActionResult

虽然这个序列化器显然比标准序列化器快,但 Microsoft WebAPI 使用 JSON.NET 的事实让我认为这个未来证明了这一点。然而,根据我在网络上的搜索和阅读,听起来 ServiceStack.Text 序列化程序是最好的。这显然源自 ProtoBuf-net 序列化程序。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-02-05
  • 2011-07-09
  • 1970-01-01
  • 2010-12-30
  • 2013-04-24
  • 1970-01-01
  • 2011-09-23
  • 2014-03-02
相关资源
最近更新 更多