Создание счетчиков производительности в Java - PullRequest
4 голосов
/ 21 декабря 2010

Кто-нибудь знает, как я могу создать новый счетчик производительности (инструмент perfmon) в Java ?

Например: новый счетчик производительности для контроля количества / продолжительности действий пользователя.

Я создал такие счетчики производительности в C #, и это было довольно легко, однако я не смог найти ничего полезного для его создания в Java ...

Ответы [ 3 ]

3 голосов
/ 21 декабря 2010

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

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

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

Java не сразу работает с perfmon (но вы должны увидеть DTrace под Solaris).

Пожалуйста, посмотрите этот вопрос для предложений: Счетчики производительности Java-приложений в Perfmon

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

Не уверен, что вы ожидаете от этого инструмента, но я хотел бы создать некоторые структуры данных для записи этого времени и считать как

class UserActionStats {
   int count;
   long durationMS;
   long start = 0;

   public void startAction() {
       start = System.currentTimeMillis();
   }
   public void endAction() {
       durationMS += System.currentTimeMillis() - start;
       count++;
   }
}

Коллекция для них может выглядеть как

private static final Map<String, UserActionStats> map = 
        new HashMap<String, UserActionStats>();

public static UserActionStats forUser(String userName) {
    synchronized(map) {
        UserActionStats uas = map.get(userName);
        if (uas == null)
            map.put(userName, uas = new UserActionStats());
        return uas;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...