我正在分析我的ASP.NET MVC應用程序,當我在IIS上打開本地版本時,我注意到反序列化大約77kb的對象需要大約100ms,這是預期的嗎?json.net性能超過77kb json字符串
另外CPU似乎最大的時候,即時通訊分析,是反序列化任務非常激烈,或者我應該在別處尋找?
感謝您提供任何幫助。
我正在分析我的ASP.NET MVC應用程序,當我在IIS上打開本地版本時,我注意到反序列化大約77kb的對象需要大約100ms,這是預期的嗎?json.net性能超過77kb json字符串
另外CPU似乎最大的時候,即時通訊分析,是反序列化任務非常激烈,或者我應該在別處尋找?
感謝您提供任何幫助。
對象的複雜性通常在反序列化方面起着重要作用。以遞歸模式包含子對象的對象將會消耗CPU和內存來正確解析。
一個簡單的名稱:如果值是Name:Value的另一個映射(對象),則值映射可能變得複雜得多。如果這種類型的遞歸正在進行,您可能想要嘗試對您的JSON進行非規範化(使Name:[primitive] Value),以便系統更容易解析。
關於MVC(rdbms數據)的反規範化可能有點困難。在許多情況下使多對多關係變得不可行。
您可以嘗試將JSON.net與內置的JavaScriptSerializer進行比較,看看是否可以獲得改進。
在某個點上,由於包含JSON.NET的幾個序列化框架利用了反射,所以對象在反序列化方面變得非常麻煩。另外,當一個對象的大小達到85KB時,它會立即被垃圾收集器推送到大對象堆,這會對性能產生影響。
我建議使用JSON# - 性能可靠的.NET JSON解析器來提高性能並避免內存瓶頸。
您可以隨時獲取json.net和個人資料的來源,查看如此密集的內容。如果沒有更多的信息(或數據),將很難提出任何建議 – 2012-01-19 01:17:39
我已經使用VS分析器進行了一些採樣,並且最大的採樣量似乎是'JsonConvert.DeserializeObject' – Mark 2012-01-19 01:31:14