Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails视图框架中的性能问题_Grails_View_Layout - Fatal编程技术网

Grails视图框架中的性能问题

Grails视图框架中的性能问题,grails,view,layout,Grails,View,Layout,我运行了一些测试来跟踪grails应用程序的响应时间 我以这种方式使用grails的布局视图框架: 在控制器中,我确定要使用的视图和布局 然后我使用如下代码呈现genericView: 因此,这个通用视图发挥了所有的魔力 我创建了一个性能过滤器,用于跟踪afterController和beforeController(控制器时间)之间以及beforeController和renderView(查看时间)之间所用的时间 在一个布局中,我有许多标记,在视图中,我在中有相同的编号,其中嵌套了 这非

我运行了一些测试来跟踪grails应用程序的响应时间

我以这种方式使用grails的布局视图框架:

在控制器中,我确定要使用的视图和布局

然后我使用如下代码呈现genericView:

因此,这个通用视图发挥了所有的魔力

我创建了一个性能过滤器,用于跟踪afterController和beforeController(控制器时间)之间以及beforeController和renderView(查看时间)之间所用的时间

在一个布局中,我有许多
标记,在视图中,我在
中有相同的编号,其中嵌套了

这非常有效,它使我能够重用布局(作为html部件的配置)和视图(配置和真实内容之间的映射)

当我在视图时间中取平均值时,执行所有包含操作大约需要35毫秒

我认为这是很多

您是否知道grails框架的其他有用替代方案,以便在渲染视图时包含和隐藏视图

或者我必须以更好的方式使用这个框架

编辑:我只是注意到时间花在了

我在一个视图中包含4个控制器。 包含的控制器和操作只有一个
呈现“某物”
时间是这样的:

主控制器: 控制器时间:3.98 观看时间:43.87

其他控制器(包括在主视图中): 总数:15.55

因此,运行4 include视图需要28.32毫秒

任何指针都会有帮助


提前感谢。

Groovy和Grails肯定存在一些性能问题,但一般来说,它们可以忽略不计,因为数据库和网络延迟通常占请求时间的大部分。所以当我看到这个问题,并期待着可怕的数字时,我很好奇。35毫秒非常快。我认为您还有更重要的事情要担心。

在我有限的grails开发中,您的性能似乎是标准的,没有任何异常。我认为这是一种过早优化的情况。您有什么硬性能目标,您是否正在编写一个需要响应时间在某个值范围内的应用程序?您是否比较过任何其他模型-视图-控制器框架和开发工具,如查看它们的性能比较情况以及它们在那里花费的时间?如果没有关于应用程序的更多信息,很难说瓶颈在哪里,但我认为您遇到的任何性能问题都更有可能发生在REST服务或数据库访问中。这些可能是您首先要关注的领域。尽可能使用Hibernate cash或兑现REST调用的结果可能会有所帮助。

35毫秒非常快,但此测试非常简单。我也有20到30个包裹。其中一些控制器使用不同的REST服务。所以我必须尽我所能减少所有的时间。29毫秒来组装已经呈现的视图,或者准备控制器动作的电子执行,在我看来,这是一个奇怪的时间花费。应用程序现在已经非常先进了。这不是过早的优化。出于同样的原因,我现在无法更改MVC框架。我能做的是(如果不是很大的努力)改变我在视图中包含控制器的方式。其他区域(REST)是通过缓存方法实现的。或者,最好使用探查器。由于你的应用程序处于高级阶段,你需要确切地知道原因。是的,4个空控制器的28毫秒太多了。