2013-10-15 55 views
0

我正在使用JavaScript库JQGrid来显示结果列表。我想挤出每一点性能增益。我正在使用JQGrid url属性来调用ASP.NET MVC ActionMethod。为JQGrid序列化JSON对象的最佳/最快方法

在操作方法我那么做我的查询加载一个匿名对象与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客户端的最快方法脚本?有更快的东西吗?

+1

它*速度够快吗?那是; *是*有一个性能瓶颈? * *是这里介绍的JSON序列化的瓶颈吗?在尝试某种形式的测量和(失败)需求之前,我尽量不要“优化”。如果有*很多*的数据,也许有某种分页技术? – user2864740

+0

几乎没有。有些事情我不能改变,因为这个项目经过十多年的发展经过了许多次迭代。我问的是基于社区最快的系列化体验。 – matthewbaskey

+0

没有数字(阅读:没有分析)没有性能问题。首先,使用配置文件查找问题 - 这将说明哪里/什么是瓶颈。如果没有问题可以找到,继续前进。如果有问题,但它在别的地方,请改正。如果配置文件被设置,那么测试不同的序列化实现和性能就变得微不足道了。分析时请确保在实际条件和负载下进行测试。 – user2864740

回答

1

我看了下MVC框架的封面,它看起来像JSON助手背后是JavascriptSerializer。在做一些测试时,我击中了最大的有效载荷。

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

Json.NET ActionResult

虽然这串明显高于标准的,微软的WebAPI使用JSON.NET让我觉得这个将来证明这一事实更快。然而,基于我在网上搜索和阅读,听起来像ServiceStack.Text序列化程序是最好的。这显然来自ProtoBuf-net串行器。

+0

你从哪里读到它是从protobuf-net派生的?请阅读她关于ServiceStack.Text https://github.com/ServiceStack/ServiceStack.Text的表现,然后转到“Performance”部分 – wal

相关问题