Возврат из Сервиса в Контроллер времени в Грааль - PullRequest
2 голосов
/ 01 февраля 2012

Мы работаем над производительностью в нашем приложении Grails, и кажется, что Grails требуется много времени (7-13 мс), чтобы вернуться из Сервиса обратно в Контроллер.Возвращаемые данные - это ссылки на доменные объекты (Карта с 2 ссылками), не очень сложные.Есть ли способ сократить это время?

У нас есть log.debug () перед оператором возврата в сервисе и еще один после выхода из сервиса в контроллере.

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

Ответы [ 2 ]

2 голосов
/ 02 февраля 2012

Перегрузка может быть вызвана тем, что Spring создает контекст транзакции вокруг вызова службы (по умолчанию Grails, см. http://grails.org/doc/2.0.x/guide/services.html#declarativeTransactions).. Если ваша служба не требует транзакций (базы данных), обязательно добавьте

* 1004.*

в сервисе.

Если вам нужны транзакции и вы выполняете много сервисных вызовов из контроллера, стоит переместить их в сервис, чтобы у вас было минимальное количество транзакций для обработкис. (Если вы абсолютно хотите сохранить их в контроллере, блок withTransaction может использоваться для выполнения нескольких вызовов службы в одной транзакции.)

2 голосов
/ 01 февраля 2012

от 7 до 13 миллисекунд в значительной степени мгновенно. Вы тратите свое время, пытаясь уменьшить это дальше. Конечно, у вас должны быть другие более важные дела?

Даже если это ваша самая насущная проблема, кажется, что нет смысла тратить на это время, потому что вы ничего не можете с этим поделать, потому что это код Grails / Spring (а не ваш), который выполняется между службой и контроллером. .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...