在模型中添加多个属性会导致使用Spring MVC的性能问题吗?

时间:2018-04-03 12:50:22

标签: java performance spring-mvc web-applications

将近50个属性设置为Model对象,其中包括列表,枚举,字符串

model.addAttribute("casetype", Casetype.values());
model.addAttribute("caseStatus", CaseStatus.values());

这是为每个控制器执行的通用代码,但对于所有控制器,我们只需要4-5个属性,所有其他45个属性都没用。

如果我们删除这45个属性,或者让它保持原样适用于所有控制器,是否会有任何性能优势?

1 个答案:

答案 0 :(得分:1)

模型基本上是HashMap<String, Object>。您放入模型的每个值都将触发HashMap上的放置操作。对HashMap的点击/获取操作通常是 <{em> O(1)。然而,将所有这些值放入模型中确实需要一些计算能力,这些值将在渲染视图时保留在内存中,并且必须在某些时候进行垃圾收集。

TLDR:将所有这些变量放入模型确实会影响性能,但这实际上取决于应用程序的大小以及触发端点的频率。如果您需要最高性能,则应从模型对象中剥离任何还原剂项目,如果只是某些用户,则可以将其保留原样。