/** * Return an new timer object which uses the given clock for measuring the * execution time. * * @param clock the clock used for measuring the execution time * @return a new timer */ public static Timer of(final Clock clock) { requireNonNull(clock); return clock instanceof NanoClock ? new Timer(System::nanoTime) : new Timer(() -> nanos(clock)); }
/** * Wraps the given supplier in a supplier which returns a {@code TimedResult}. * * @param supplier the supplier to wrap * @param clock the clock used for measure the execution time * @param <T> the result type * @return the wrapped supplier which returns a {@code TimedResult} */ public static <T> Supplier<TimedResult<T>> of( final Supplier<? extends T> supplier, final Clock clock ) { return () -> { final Timer timer = Timer.of(clock).start(); final T result = supplier.get(); return new TimedResult<>(timer.stop().getTime(), result); }; }
/** * Return an new timer object with the default clock implementation. * * @return a new timer */ public static Timer of() { return new Timer(System::nanoTime); }
/** * Wraps the given function in a function which returns a * {@code TimedResult}. * * @param function the function to wrap * @param clock the clock used for measure the execution time * @param <T> the functions parameter type * @param <R> the functions return type * @return the wrapped function which returns a {@code TimedResult} */ public static <T, R> Function<T, TimedResult<R>> of( final Function<? super T, ? extends R> function, final Clock clock ) { return value -> { final Timer timer = Timer.of(clock).start(); final R result = function.apply(value); return new TimedResult<>(timer.stop().getTime(), result); }; }
final Timer timer = Timer.of(_clock).start(); final Timer evaluateTimer = Timer.of(_clock).start(); final ISeq<Phenotype<G, C>> evalPop = _evaluator.evaluate(start.getPopulation()); evaluateTimer.stop(); filteredOffspring.join().duration, filteredSurvivors.join().duration, result.duration.plus(evaluateTimer.getTime()), timer.stop().getTime() );