Как измерить время выполнения потока Java? - PullRequest
8 голосов
/ 06 мая 2010

Я хочу измерить время выполнения потока в Java. Сейчас я отслеживаю время начала и окончания потока, но думаю, что это не так точно, потому что поток может быть приостановлен во время его выполнения.

Ответы [ 3 ]

17 голосов
/ 22 мая 2010

Java MXBeans может предоставлять процессорное время для каждого потока:

import java.lang.management.ManagementFactory;
import java.lang.management.ThreadMXBean;

long nanos = ManagementFactory.getThreadMXBean().getThreadCpuTime(Thread.currentThread().getId());
7 голосов
/ 06 мая 2010

Это нетривиально. Лучше всего использовать профилировщик, который может накапливать фактические циклы процессора.

0 голосов
/ 25 мая 2010

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

...