Измерьте количество времени, которое требуется серверу для ответа на запрос GET - PullRequest
0 голосов
/ 02 мая 2018

Я бы хотел видеть, сколько времени требуется базе данных sql для ответа на метод get в моем приложении. В настоящее время я измеряю это с помощью System.currentTimeMillis () до и после запуска метода:

public long responseTime(long start, long end) {
    long elapsed = end - start;
    return elapsed;
};

@GET
public getAllProfiles() {
    long start = System.currentTimeMillis();
    profileDAO.getAllProfiles();
    long end = System.currentTimeMillis();
    long elapsed = responseTime(start, end);
    return elapsed;
}

Мое беспокойство заключается в том, что я измеряю, сколько времени требуется для запуска моего метода, а не сколько времени требуется серверу для ответа на этот метод. Есть ли лучший способ сделать это?

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Dropwizard предоставляет аннотацию @Timed , которую можно использовать в методах ресурсов JAX-RS:

@Timed
@GET
public List<Profile> getAllProfiles() {
    List<Profile> profiles = profileDAO.getAllProfiles();
    return profiles;
}

Статистика будет доступна в контексте администрирования вашего приложения Dropwizard, которое обычно подается через порт 8081.

0 голосов
/ 02 мая 2018

Одна заметка об использовании currentTimeMillis(). Все меняется, но я обнаружил, что миллис обновляются только каждые 10 миллис или около того. Чтобы увидеть это, попробуйте создать тестовый класс, который зацикливается 20 раз и использует Thread.sleep(1). Вы увидите то же значение в миллисекундах примерно в 10 раз, затем оно изменится на другое значение примерно на 10 миллисекунд. Вместо этого используется nanoTime() вместо продолжительности.

Что касается вашего вопроса, создайте тестовый класс, который фиксирует время и вызывает ваш метод. Однако я сомневаюсь, что вы увидите большую разницу.

...