gpt4 book ai didi

performance - 在Grails中从服务返回到 Controller 时间

转载 作者:行者123 更新时间:2023-12-02 13:53:20 28 4
gpt4 key购买 nike

我们正在grails应用程序中提高性能,而grails似乎需要很多时间(7-13毫秒)才能退出服务并返回到Controller。返回的数据是对域对象的引用(具有2个引用的Map),不是很复杂。有什么办法可以缩短这个时间?

我们在服务中的return语句之前有log.debug(),而在 Controller 中的服务退出后有另一个。

2012-02-01 15:16:07,048 [http-8080-1] DEBUG api.TestService test before service return
2012-02-01 15:16:07,063 [http-8080-1] DEBUG api.TestController test after service return

编辑:Grails版本1.3.7

编辑:打开休眠SQL日志记录后:
2012-02-02 09:20:04,504 [http-localhost%2F127.0.0.1-8080-1] DEBUG api.TestService before return
2012-02-02 09:20:04,505 [http-localhost%2F127.0.0.1-8080-1] DEBUG hibernate.SQL select nextval ('hibernate_sequence')
2012-02-02 09:20:04,516 [http-localhost%2F127.0.0.1-8080-1] DEBUG hibernate.SQL insert into test ...
2012-02-02 09:20:04,520 [http-localhost%2F127.0.0.1-8080-1] DEBUG hibernate.SQL update test1 ...
2012-02-02 09:20:04,522 [http-localhost%2F127.0.0.1-8080-1] DEBUG hibernate.SQL insert into test_test1 ...
2012-02-02 09:20:04,524 [http-localhost%2F127.0.0.1-8080-1] DEBUG api.TestController after service

最佳答案

开销可能是由Spring围绕服务调用构建事务上下文而引起的(Grails默认为默认值,请参阅http://grails.org/doc/2.0.x/guide/services.html#declarativeTransactions)。
如果您的服务不需要(数据库)事务,请确保添加

static transactional = false 

在服务中。

如果您确实需要交易,并且正在从 Controller 执行许多服务调用,则将它们移至服务是值得的,这样您就可以处理最少的交易。 (如果您绝对希望将它们保留在 Controller 中,那么可以使用withTransaction块在单个事务中执行多个服务调用。)

关于performance - 在Grails中从服务返回到 Controller 时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9097542/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com