14

我正在使用 Grails 2.0。我曾经在 Grails 1.3.7 下开发,但是在 Grails 2.0 下运行应用程序时性能非常慢。一个页面可能需要超过 30 秒才能显示出来,这非常令人尴尬且效率低下。

我搜索了一下,发现 2.0 中的 GSP 在某些情况下比 1.3.7 慢 10 倍;Greame 解释说,在 dev mod 中有一种处理 GSP 的新方法,但是在执行 grails prod run-app 时,我遇到了几乎相同的问题。

我应该怎么做才能加快开发进程?我浪费了太多时间。

PS:我的 GRAILS_OPTS 是“-server -Xmx600M -Xms600M -XX:MaxPermSize=250m -Dfile.encoding=UTF-8 -Dserver.port=9090”</p>

4

3 回答 3

7

大约 20 分钟前,我在邮件列表上发布了一个小公告:http: //grails.1312388.n4.nabble.com/GSP-Compilation-tt4632864.html#a4635595

此问题已修复:http: //jira.grails.org/browse/GRAILS-9423

请测试最新的 2.1.x 快照构建的性能。

试试这些

export GRAILS_OPTS="-server -noverify -XX:PermSize=256m
-XX:MaxPermSize=256m -Xmx600M -Xms600m -XX:+UseParallelGC -Djava.net.preferIPv4Stack=true 
-Dsun.reflect.inflationThreshold=100000"

对我来说,诀窍是将 Xmx 和 Xms 设置为相同的值,并将 PermSize 和 MaxPermSize 设置为相同的值。sun.reflect.inflationThreshold 有助于 permgen。( Grails jira 中的http://jira.grails.org/browse/GRAILS-7878?focusedCommentId=66447&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-66447进行解释)

顺便提一句。我在 10 分钟前提交了这个问题:http: //jira.grails.org/browse/GRAILS-9444 如果它很有趣,请就这个问题投票。

于 2012-09-27T16:06:29.463 回答
3

由于重新加载的改进,Grails 2.x 在开发模式下比 1.3.x 慢。它使用类似于 JRebel 的 Spring-Loaded 重载代理。

确保您的开发笔记本电脑有足够的内存 (>4GB)、SSD 和快速的 i7 CPU。

购买一台配备 16GB 内存和快速 SSD 的最新笔记本电脑,您就不会再考虑速度慢了。我还推荐i7系列CPU。目前仅花费约 1200 美元。

于 2012-09-28T21:58:19.043 回答
2

为确保您使用的是 Spring-Loaded 重载代理的最新修复,请使用 Grails 2.1.x 而不是 Grails 2.0.x。对于 Grails 2.1.1,您可能希望将 Spring-Loaded 重新加载代理升级到快照版本。

您可以从以下位置获取最新快照: https ://repo.springsource.org/snapshot/com/springsource/springloaded/springloaded-core/

目前它是https://repo.springsource.org/snapshot/com/springsource/springloaded/springloaded-core/1.1.1.BUILD-SNAPSHOT/springloaded-core-1.1.1.BUILD-20120821.173635-2.jar

将 $GRAILS_HOME/lib/com.springsource.springloaded/springloaded-core/jars/springloaded-core-1.0.6.jar 替换为下载的快照(将快照重命名为相同的文件名 springloaded-core-1.0.6.jar) .

一旦 springloaded-core 版本 1.1.1 发布,这个答案就会过时。

于 2012-09-28T21:50:10.563 回答