将近50个属性设置为Model对象,其中包括列表,枚举,字符串
model.addAttribute("casetype", Casetype.values());
model.addAttribute("caseStatus", CaseStatus.values());
这是为每个控制器执行的通用代码,但对于所有控制器,我们只需要4-5个属性,所有其他45个属性都没用。
如果我们删除这45个属性,或者让它保持原样适用于所有控制器,是否会有任何性能优势?
答案 0 :(得分:1)
模型基本上是HashMap<String, Object>
。您放入模型的每个值都将触发HashMap
上的放置操作。对HashMap
的点击/获取操作通常是 <{em> O(1)
。然而,将所有这些值放入模型中确实需要一些计算能力,这些值将在渲染视图时保留在内存中,并且必须在某些时候进行垃圾收集。
TLDR:将所有这些变量放入模型确实会影响性能,但这实际上取决于应用程序的大小以及触发端点的频率。如果您需要最高性能,则应从模型对象中剥离任何还原剂项目,如果只是某些用户,则可以将其保留原样。