Class BenchmarkUtils
java.lang.Object
org.eclipse.epsilon.common.util.profiling.BenchmarkUtils
Utility class for performance profiling; mainly for measuring execution times.
All long temporal values are assumed to be nanoseconds if not otherwise specified.
Similarly, all long memory values are assumed to be in bytes if not otherwise specified.
- Since:
- 1.6
- Author:
- Sina Madani
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final ProfileDiagnostic.MemoryUnitstatic final TemporalUnitstatic final String -
Method Summary
Modifier and TypeMethodDescriptionstatic voidaddProfileInfo(Collection<ProfileDiagnostic> profileStages, String stage, long nanos, long memory) static StringformatDuration(Duration duration) NOTE: Only durations less than 24 hours are supported.static StringformatExecutionStages(Iterable<ProfileDiagnostic> profileInfo) static StringformatExecutionTime(long nanos) static StringformatExecutionTime(String title, long nanos) static StringformatExecutionTime(String title, Duration time) static StringformatExecutionTime(Duration time) static StringformatExecutionTimes(Iterable<ProfileDiagnostic> profileInfo) static StringformatMemory(long amountInBytes, ProfileDiagnostic.MemoryUnit units) static StringformatMemory(ProfileDiagnostic pd, Optional<ProfileDiagnostic.MemoryUnit> conversionFactor) static StringformatMemoryConsumption(Iterable<ProfileDiagnostic> profileInfo, ProfileDiagnostic.MemoryUnit units) static StringformatMillis(long millis) static StringformatNanos(long nanos) static Stringstatic StringConvenience method for getting the CPU model.static longstatic Stringstatic intDelegates toRuntime.availableProcessors().static ProfileDiagnosticgetProfileStageByName(Collection<ProfileDiagnostic> profileInfo, String stageName) Finds the stage for the given name.static StringgetTime()static DurationgetTotalExecutionTimeFrom(Collection<ProfileDiagnostic> profiledStages) Sums the execution times of the execution stages.static longstatic longmeasureAndAddGCTime(Collection<ProfileDiagnostic> profileInfo) CallsRuntime.gc(), measuring the time and accumulating it in the provided profiled stages using theGC_PROFILE_STAGEkey.static longmeasureTimeMillis(Runnable code) static <T> longmeasureTimeMillis(Consumer<T> code, T argument) static <T,E extends Exception>
longmeasureTimeMillis(CheckedConsumer<T, E> code, T argument) static <E extends Exception>
longmeasureTimeMillis(CheckedRunnable<E> code) static longmeasureTimeNanos(Runnable code) static <T> longmeasureTimeNanos(Consumer<T> code, T argument) static <T,E extends Exception>
longmeasureTimeNanos(CheckedConsumer<T, E> code, T argument) static <E extends Exception>
longmeasureTimeNanos(CheckedRunnable<E> code) static longnanosToMillis(long nanos) static voidprintExecutionTime(String stageTag, Runnable code) static <E extends Exception>
voidprintExecutionTime(String stageTag, CheckedRunnable<E> code) static voidprofileExecutionStage(Collection<ProfileDiagnostic> profileInfo, String description, Runnable code) static <T> voidprofileExecutionStage(Collection<ProfileDiagnostic> profileInfo, String description, Consumer<T> code, T argument) static <T,R> R profileExecutionStage(Collection<ProfileDiagnostic> profileInfo, String description, Function<T, R> code, T argument) static <R> RprofileExecutionStage(Collection<ProfileDiagnostic> profileInfo, String description, Supplier<R> code) static <T,E extends Exception>
voidprofileExecutionStage(Collection<ProfileDiagnostic> profileInfo, String description, CheckedConsumer<T, E> code, T argument) static <T,R, E extends Exception>
RprofileExecutionStage(Collection<ProfileDiagnostic> profileInfo, String description, CheckedFunction<T, R, E> code, T argument) Creates a new ProfileDiagnostic and adds it to the collection of profiled stages, measuring execution time and memory consumption.static <E extends Exception>
voidprofileExecutionStage(Collection<ProfileDiagnostic> profileInfo, String description, CheckedRunnable<E> code) static <R,E extends Exception>
RprofileExecutionStage(Collection<ProfileDiagnostic> profileInfo, String description, CheckedSupplier<R, E> code) static ProfileDiagnosticremoveGCTimeFromStage(Collection<ProfileDiagnostic> profileInfo, String stageName) Performs aRuntime.gc(), takes into account the time taken to do so and subtracts it from the given stage, identified by its name.
-
Field Details
-
GC_PROFILE_STAGE
- See Also:
-
DEFAULT_MEMORY_UNITS
-
DEFAULT_TIME_UNITS
-
-
Method Details
-
formatDuration
NOTE: Only durations less than 24 hours are supported. -
getTotalExecutionTimeFrom
Sums the execution times of the execution stages.- Parameters:
profiledStages- The profiled stages.- Returns:
- The total duration of
ProfileDiagnostic.executionTimefor the given profiled stages.
-
getTotalMemoryUsage
public static long getTotalMemoryUsage()- Returns:
- The sum of peak memory usage for all memory pools.
-
getCurrentMemoryUsage
public static long getCurrentMemoryUsage() -
getTime
- Returns:
- The current time as a String.
-
formatMemory
public static String formatMemory(ProfileDiagnostic pd, Optional<ProfileDiagnostic.MemoryUnit> conversionFactor) -
getAvailableMemory
-
getMaxMemory
-
formatMemory
-
getCpuName
Convenience method for getting the CPU model.- Returns:
- The CPU model as reported by the operating system.
- Since:
- 1.6
-
getNumberOfHardwareThreads
public static int getNumberOfHardwareThreads()Delegates toRuntime.availableProcessors().- Returns:
- The number of logical cores available to the JVM.
-
getProfileStageByName
public static ProfileDiagnostic getProfileStageByName(Collection<ProfileDiagnostic> profileInfo, String stageName) Finds the stage for the given name.- Parameters:
profileInfo- The profiled stages.stageName- The stage name.- Returns:
- The prifle stage, or
nullif there wasn't one.
-
removeGCTimeFromStage
public static ProfileDiagnostic removeGCTimeFromStage(Collection<ProfileDiagnostic> profileInfo, String stageName) Performs aRuntime.gc(), takes into account the time taken to do so and subtracts it from the given stage, identified by its name.- Parameters:
profileInfo- The profiled stages.stageName- The stage identifier to subtract garbage collection time from.- Returns:
- The updated stage, for convenience.
-
measureAndAddGCTime
CallsRuntime.gc(), measuring the time and accumulating it in the provided profiled stages using theGC_PROFILE_STAGEkey.- Parameters:
profileInfo- The profiled stages to update.- Returns:
- The time taken to perform the GC invocation.
-
profileExecutionStage
public static <T,R, R profileExecutionStageE extends Exception> (Collection<ProfileDiagnostic> profileInfo, String description, CheckedFunction<T, R, throws EE> code, T argument) Creates a new ProfileDiagnostic and adds it to the collection of profiled stages, measuring execution time and memory consumption.- Parameters:
profileInfo- The execution stages to write to.description- The name of the execution stage.code- The transformation to profile.argument- The argument to the transformation code.- Returns:
- The result of the transformation code.
- Throws:
E- Any exception thrown from the transformation code.
-
profileExecutionStage
public static <T,E extends Exception> void profileExecutionStage(Collection<ProfileDiagnostic> profileInfo, String description, CheckedConsumer<T, E> code, T argument) throws E- Throws:
E extends Exception
-
profileExecutionStage
public static <R,E extends Exception> R profileExecutionStage(Collection<ProfileDiagnostic> profileInfo, String description, CheckedSupplier<R, E> code) throws E- Throws:
E extends Exception
-
profileExecutionStage
public static <E extends Exception> void profileExecutionStage(Collection<ProfileDiagnostic> profileInfo, String description, CheckedRunnable<E> code) throws E - Throws:
E extends Exception
-
profileExecutionStage
public static <T,R> R profileExecutionStage(Collection<ProfileDiagnostic> profileInfo, String description, Function<T, R> code, T argument) -
profileExecutionStage
public static <T> void profileExecutionStage(Collection<ProfileDiagnostic> profileInfo, String description, Consumer<T> code, T argument) -
profileExecutionStage
public static <R> R profileExecutionStage(Collection<ProfileDiagnostic> profileInfo, String description, Supplier<R> code) -
profileExecutionStage
public static void profileExecutionStage(Collection<ProfileDiagnostic> profileInfo, String description, Runnable code) -
measureTimeNanos
public static <T,E extends Exception> long measureTimeNanos(CheckedConsumer<T, E> code, T argument) throws E- Throws:
E extends Exception
-
measureTimeNanos
- Throws:
E extends Exception
-
measureTimeNanos
-
measureTimeNanos
-
measureTimeMillis
public static <T,E extends Exception> long measureTimeMillis(CheckedConsumer<T, E> code, T argument) throws E- Throws:
E extends Exception
-
measureTimeMillis
- Throws:
E extends Exception
-
measureTimeMillis
-
measureTimeMillis
-
printExecutionTime
-
printExecutionTime
public static <E extends Exception> void printExecutionTime(String stageTag, CheckedRunnable<E> code) throws E - Throws:
E extends Exception
-
addProfileInfo
public static void addProfileInfo(Collection<ProfileDiagnostic> profileStages, String stage, long nanos, long memory) -
formatExecutionStages
-
formatMemoryConsumption
public static String formatMemoryConsumption(Iterable<ProfileDiagnostic> profileInfo, ProfileDiagnostic.MemoryUnit units) -
formatExecutionTimes
-
formatExecutionTime
-
formatExecutionTime
-
formatExecutionTime
-
formatExecutionTime
-
formatMillis
-
formatNanos
-
nanosToMillis
public static long nanosToMillis(long nanos)
-