我目前正在开发一个报告应用程序来比较多个测试。我需要将一个json对象从控制器传递到客户端,以便为报告绘制所有这些图表。我在这里附上我比较2个测试时得到的结果的图像。传递的数据是~600kb,时间~3秒。 这是我在控制器中使用的代码:
var jsonResult = Json(new
{
ReportData = reportData
}, JsonRequestBehavior.AllowGet);
jsonResult.MaxJsonLength = Int32.MaxValue;
return jsonResult;
如何提高应用程序的性能?非常感谢任何建议。
Ps:如果我的问题不适合这里的标准,请告诉我,我可以调整它。对于所有已经downvoted,请评论,以便我可以改善下一次。谢谢你
答案 0 :(得分:2)
你应该在这3秒内向下钻取,以确定它们在哪里丢失。这里发生了很多事情:
reportData
变量 - 衡量需要多长时间reportData
变量序列化为JSON - 衡量需要多长时间完成这些测量后,您将知道您需要/可以优化的位置。如果事实证明在3中丢失了3分中的2.9分,那么你肯定应该改进查询数据的方式或者优化你的数据存储(考虑到你提供的信息到目前为止,谈论相当困难和主观的事情) 。也许您只是忘了在SQL数据库的某些列中添加索引 - 谁知道。
另一方面,如果你的瓶颈是2.然后你肯定有一个巨大的设计问题。通常序列化不是问题,除非你做了一些非常错误的事情,比如尝试序列化大量数据,而这些数据是没有人需要的或人类可以消耗的。在这种情况下,您当然应该与发明您正在实施的屏幕的UI人员交谈,并向他们解释在分辨率为1024x768的屏幕上显示100万点几乎没有意义(仅举例)然后当然改进您的查询,以便您的视图模型不是那么庞大。
所以最重要的是你应该缩小这个时间丢失的地方(使用分析器是一个非常好的开始,我会建议你使用Telerik的JustTrace),这样你就可以准确地知道需要改进的地方。