2013-10-15 95 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

相關問題