我运行了一些测试来跟踪grails应用程序的响应时间。
我以这种方式使用grails的layout-view框架:
在控制器中,我确定要使用的视图和布局
然后我用这样的代码渲染一个genericView:
所以这个genericView做了所有的魔术。
我创建了一个性能过滤器,用于跟踪afterController和beforeController(控制器时间)之间以及beforeController和renderView(查看时间)之间需要多长时间。
在布局中,我有很多<g:pageProperty name="">
个标签,在视图中,<content tag="..">
中的嵌套包含<g:include controller="..."/>
的编号相同。
这非常有效,它让我可以重用布局(作为html部分的配置)和视图(处置和实际内容之间的映射)。
当我在视图时间中取平均值时,所有包含的内容都需要35毫秒。
我认为这很多。
您是否知道grails框架的任何其他有用替代方案,以便在呈现视图时包含并保留视图?
或许我必须以更好的方式使用框架?
编辑:我注意到时间花在<g:include controller="..."/>
上。
我在视图中包含4个控制器。
包含的控制器和操作只有render "something"
时间是这样的:
主控制器: 控制器时间:3.98 查看时间:43.87
其他控制器(包含在主视图中): 总计:15.55
所以4包含视图需要 28.32毫秒才能运行!
任何指针都会有所帮助。
提前致谢。
答案 0 :(得分:1)
Groovy和Grails确实存在一些性能问题,但总的来说它们可以忽略不计,因为数据库和网络延迟通常构成了请求时间的大部分时间。所以当我看到这个问题并期待可怕的数字时,我很好奇。 35毫秒非常快。我认为你有更重要的事情需要担心。
答案 1 :(得分:1)
由于我有限的grails开发,你的表现似乎是标准的,没有任何异常。我相信这是一个过早优化的案例。你有什么硬性能目标,你在编写一个需要响应时间在一定值内的应用程序吗?您是否比较过任何其他模型视图控制器框架和开发工具(例如Spring Roo),以了解性能比较以及它们在那里花费的时间?有了关于您的应用程序的更多信息,很难说出您的瓶颈所在,但我认为您遇到的任何性能问题都更有可能发生在您的REST服务或数据库访问中。那些可能是您首先要关注的领域。尽可能使用Hibernate现金或兑现REST调用的结果可能有所帮助。