Для определенного сегмента кода Java я хотел бы измерить:
- Время выполнения (наиболее вероятно время выполнения потока )
- Использование памяти
- загрузка процессора (в частности, для сегмента кода)
Я относительный новичок в Java и не знаю, как этого достичь. Меня упомянули JMX , однако я не уверен, как это можно использовать, и JMX выглядит немного «тяжело» для того, что я собираюсь сделать.
В идеале я хотел бы, чтобы какой-то класс измерений мог сказать, что я хотел бы измерить, с возможностью вызова метода start()
до сегмента кода и метода stop()
после. Соответствующие метрики будут записываться в указанный мной файл.
Например:
import com.example.metricLogger;
metricLogger logger = new metricLogger();
logger.setLogPath(pathToLogFile);
logger.monitor(executionTime);
logger.monitor(memoryUsage);
logger.monitor(cpuLoad);
logger.start();
/* Code to be measured */
logger.stop();
Существует ли какой-либо стандартный / общий / традиционный способ достижения этого в Java?
Такие измерения предназначены для одноразовых сравнений производительности, и поэтому я не ищу каких-либо производственных процессов долгосрочного мониторинга.
Я более чем рад, что меня отсылают к учебным пособиям или внешним примерам, и я не ожидаю полного ответа здесь. Тем не менее, если что-то столь простое, как приведенное выше, может быть достигнуто, реалистичный пример получится очень удачным.