Я использовал метод ниже несколько раз и имел успех. Если вас интересует многопоточный бенчмаркинг, обратитесь к ссылке внизу страницы.
Timing однопоточной задачи с помощью процессора, систем, и время пользователя Timing однопоточной задачи с помощью процессора, систем, и время пользователя
«Время пользователя» этого время, потраченного запуская собственный код приложения.
«Системное время» - это время, затраченное на выполнение кода операционной системы от имени вашего приложения (например, для ввода-вывода).
Java 1.5 представил пакет java.lang.management для мониторинга JVM. Точкой входа для пакета является класс ManagementFactory. Это статические методы, возвращающие множество различных объектов «MXBean», которые сообщают информацию JVM. Один из таких компонентов может сообщать о потоке CPU и пользовательском времени.
Call ManagementFactory. getThreadMXBean(), чтобы получить ThreadMXBean, который описывает текущие потоки JVM. Метод getCurrentThreadCpuTime() bean-компонента возвращает время процессора для текущего потока. Метод getCurrentThreadUserTime() возвращает время пользователя потока. Оба этих отчета раз в наносекундах (но см. Приложение о временах и (отсутствие) точности наносекунды).
Обязательно сначала вызовите isCurrentThreadCpuTimeSupported(). Если он возвращает false (редко), реализация JVM или ОС не поддерживает получение времени процессора или пользователя. В этом случае вы вернетесь к использованию часов настенных часов.
import java.lang.management.*;
/** Get CPU time in nanoseconds. */
public long getCpuTime() {
ThreadMXBean bean = ManagementFactory.getThreadMXBean();
return bean.isCurrentThreadCpuTimeSupported() ?
bean.getCurrentThreadCpuTime() : 0L;
}
/** Get user time in nanoseconds. */
public long getUserTime() {
ThreadMXBean bean = ManagementFactory.getThreadMXBean();
return bean.isCurrentThreadCpuTimeSupported() ?
bean.getCurrentThreadUserTime() : 0L;
}
/** Get system time in nanoseconds. */
public long getSystemTime() {
ThreadMXBean bean = ManagementFactory.getThreadMXBean();
return bean.isCurrentThreadCpuTimeSupported() ?
(bean.getCurrentCpuTime() - bean.getCurrentThreadUserTime()) : 0L;
}
Эти методы возвращают процессор, пользователь и системное время с момента запуска потока. Ко времени задача после того, как поток начал, вызвать один или несколько из них до и после выполнения задачи и взять разницу:
long startSystemTimeNano = getSystemTime();
long startUserTimeNano = getUserTime();
... do task ...
long taskUserTimeNano = getUserTime() - startUserTimeNano;
long taskSystemTimeNano = getSystemTime() - startSystemTimeNano;
Взятые из, http://nadeausoftware.com/articles/2008/03/java_tip_how_get_cpu_and_user_time_benchmarking#TimingasinglethreadedtaskusingCPUsystemandusertime
W шляпа вид игры? Могут ли два ИИ играть друг против друга? –
Является ли алгоритм основанный на алгоритме min-max? Если это так - сравнение времени может быть не такой хорошей идеей для сравнения двух. – amit
это настольная игра, оба ИИ могут играть друг против друга, но мне они не понадобятся, так как я только проверяю их скорость.Я знаю, что модифицированный алгоритм, как правило, быстрее. Я просто не знаю, как официально заявить, насколько быстрее это, чем исходный алгоритм. Например, я могу сказать, что он на 20% быстрее, чем исходный алгоритм при выборе перемещения после тестирования различных типов сценариев. Я действительно делаю свою диссертацию. – blackmambo