Время выполнения метода измерения для веб-службы Java в производственной среде - PullRequest
0 голосов
/ 13 декабря 2010

Мне интересно узнать, как лучше измерить время выполнения методов в веб-службе Java, над которой я работаю.

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

Пока что большинствоиз предложений (таких как здесь & здесь ), которые я видел, я должен использовать System.currentTimeMillis() в начале и конце кода, который мне интересен, и вычислять истекшее время,но действительно ли это лучшее решение этой проблемы для производственной среды?

Насколько подходит System.currentTimeMillis() для измерения времени выполнения метода, и есть ли альтернативы?

РЕДАКТИРОВАТЬ 0: Чтобы уточнить, ключевое требование заключается в том, что это измерение выполнения должны быть развернуты как частьстандартное развертывание для сбора данных, чтобы к ним можно было обращаться в случае возникновения проблемы с поддержкой производительности, поскольку служба является частью сложной системы новых и устаревших компонентов

Ответы [ 3 ]

2 голосов
/ 13 декабря 2010

Вы можете использовать класс Spring Framework 'StopWatch':

Вы даже можете использовать AOP, таким образом вы можете профилировать код, не меняя его

1 голос
/ 13 декабря 2010

System.currentTimeMillis () подходит, если вашему приложению потребуется более 1 или 2 миллисекунды (хотя его точность может быть больше, чем мс в зависимости от вашей ОС).

Возможно, вы предпочтете использовать System.nanoTime (), который может быть более точным, но не с наносекундами.Обратите внимание, что его точность также зависит от вашей базовой системы.

Оба эти метода довольно низкоуровневые (вам нужно управлять временными метками), но имеют меньшие издержки, чем более высокоуровневый API.

1 голос
/ 13 декабря 2010

Запись прошедшего времени - это хорошо, но вам нужно рассчитать время на стороне клиента, чтобы действительно понять, сколько времени это займет. Это также скажет вам, сколько времени вы тратите на передачу данных, что может указывать на узкое место ввода / вывода.

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