我正在评测我的ASP.NET MVC应用程序,当我在IIS上使用本地版本时,我注意到反序列化一个大约77kb的对象需要大约100ms,这是预期的吗?
此外,在im分析时CPU似乎达到了最大值,反序列化的任务是否非常繁重,或者我应该在其他地方寻找?
谢谢你能提供的任何帮助。
对象的复杂性通常在反序列化方面起着重要作用。在递归模式中包含子对象的对象将消耗CPU和内存来正确解析。
如果Value是Name:Value的另一个映射(对象),那么简单的Name:Value映射可能会变得更加复杂。如果正在进行这种类型的递归,您可能需要尝试对JSON进行反规范化(生成名称:[primity]Value),以便系统更容易解析。
对MVC(rdbms数据)进行反规范化可能有点困难。在很多情况下,缓和多对多的关系是不可行的。
您可以尝试将JSON.net与内置的JavaScriptSerializer进行比较,看看是否可以得到改进。
在某一点上,由于包括JSON.NET在内的几个串行化框架利用了反射,对象的去串行化变得很麻烦。此外,当对象大小达到85KB时,垃圾回收器会立即将其推送到大型对象堆,这将对性能产生影响。
我建议使用JSON#——一个性能强大的.NET JSON解析器来提高性能,避免内存瓶颈。