Javolution 6.0.0 java
|
Public Member Functions | |
Perfometer (String description) | |
double | getAvgTimeInSeconds () |
String | getDescription () |
T | getInput () |
int | getNbrOfIterations () |
double[] | getTimesInSeconds () |
Perfometer< T > | measure (T input, int nbrOfIterations) |
void | print () |
void | printDetails () |
double | getWCETinSeconds () |
int | getWorstCaseNumber () |
Static Public Attributes | |
static final Configurable< Integer > | DURATION_MS |
static final Configurable< Boolean > | SKIP |
Protected Member Functions | |
abstract void | initialize () throws Exception |
abstract void | run (boolean measure) throws Exception |
void | validate () |
Private Member Functions | |
long[] | longArray (int length, long initialValue) |
Private Attributes | |
final String | description |
T | input |
long[] | times |
Utility class to measure the worst case execution time and average execution time with high precision. Here an example measuring the worst case execution time of java.util.List#add(int, Object) for diverse list implementations.
[code] Perfometer<Class<? extends List>> insertPerf = new Perfometer<>("java.util.List#add(int, Object)") { List<Object> list; Random random; protected void initialize() throws Exception { list = getInput().newInstance(); random = new Random(-1); // Use seed to ensure same execution path. } protected void run(boolean measure) { Object obj = new Object(); int i = random.nextInt(list.size() + 1); if (measure) list.add(i, obj); } protected void validate() { // Optional. assert list.size() == getNbrOfIterations(); } } ... public void testExecutionTime() { insertPerf.measure(java.util.ArrayList.class, 10000).print(); insertPerf.measure(java.util.LinkedList.class, 10000).print(); insertPerf.measure(javolution.util.FastTable.class, 10000).print(); } ...
[INFO] java.util.List::add(int, Object) (10000) for java.util.ArrayList: 590.21450 ns (avg), 8443.0000 ns (wcet#9369) [INFO] java.util.List::add(int, Object) (10000) for java.util.LinkedList: 4849.8313 ns (avg), 26536.000 ns (wcet#9863) [INFO] java.util.List::add(int, Object) (10000) for javolution.util.FastTable: 217.26300 ns (avg), 534.00000 ns (wcet#8864)
[/code]
<T> | the perfometer input type. |
Definition at line 53 of file Perfometer.java.
javolution.test.Perfometer< T >.Perfometer | ( | String | description | ) |
Creates a perfometer having the specified description.
description | the description of the code being measured. |
Definition at line 100 of file Perfometer.java.
References javolution.test.Perfometer< T >.description.
double javolution.test.Perfometer< T >.getAvgTimeInSeconds | ( | ) |
Returns the average execution time in seconds.
Definition at line 107 of file Perfometer.java.
References javolution.test.Perfometer< T >.times.
Referenced by javolution.test.Perfometer< T >.print().
String javolution.test.Perfometer< T >.getDescription | ( | ) |
Returns this perfometer description.
Definition at line 119 of file Perfometer.java.
References javolution.test.Perfometer< T >.description.
T javolution.test.Perfometer< T >.getInput | ( | ) |
Returns this perfometer current inputs.
Definition at line 126 of file Perfometer.java.
References javolution.test.Perfometer< T >.input.
int javolution.test.Perfometer< T >.getNbrOfIterations | ( | ) |
Returns this perfometer current number of iterations performed.
Definition at line 133 of file Perfometer.java.
References javolution.test.Perfometer< T >.times.
Referenced by javolution.test.Perfometer< T >.print().
double [] javolution.test.Perfometer< T >.getTimesInSeconds | ( | ) |
Returns the execution times in seconds.
Definition at line 140 of file Perfometer.java.
References javolution.test.Perfometer< T >.times.
double javolution.test.Perfometer< T >.getWCETinSeconds | ( | ) |
Returns the worst case execution time in seconds.
Definition at line 222 of file Perfometer.java.
References javolution.test.Perfometer< T >.times.
Referenced by javolution.test.Perfometer< T >.print().
int javolution.test.Perfometer< T >.getWorstCaseNumber | ( | ) |
Returns the iteration number having the slowest execution time.
Definition at line 234 of file Perfometer.java.
References javolution.test.Perfometer< T >.times.
Referenced by javolution.test.Perfometer< T >.print().
|
abstractprotected |
Performs the initialization.
Referenced by javolution.test.Perfometer< T >.measure().
|
private |
Definition at line 265 of file Perfometer.java.
Referenced by javolution.test.Perfometer< T >.measure().
Perfometer<T> javolution.test.Perfometer< T >.measure | ( | T | input, |
int | nbrOfIterations | ||
) |
Measures the worst case execution time and average execution time.
input | the test input. |
nbrOfIterations | the number of iterations performed on which the average will be calculated. |
Definition at line 156 of file Perfometer.java.
References javolution.test.Perfometer< T >.DURATION_MS, javolution.lang.Configurable< T >.get(), javolution.test.Perfometer< T >.initialize(), javolution.test.Perfometer< T >.input, javolution.test.Perfometer< T >.longArray(), javolution.lang.MathLib.min(), javolution.test.Perfometer< T >.run(), javolution.test.Perfometer< T >.SKIP, and javolution.test.Perfometer< T >.times.
void javolution.test.Perfometer< T >.print | ( | ) |
Outputs the result.
Definition at line 194 of file Perfometer.java.
References javolution.text.TextBuilder.append(), javolution.test.Perfometer< T >.description, javolution.lang.Configurable< T >.get(), javolution.test.Perfometer< T >.getAvgTimeInSeconds(), javolution.test.Perfometer< T >.getNbrOfIterations(), javolution.test.Perfometer< T >.getWCETinSeconds(), javolution.test.Perfometer< T >.getWorstCaseNumber(), javolution.context.LogContext.info(), javolution.test.Perfometer< T >.input, javolution.text.TextBuilder.length(), and javolution.test.Perfometer< T >.SKIP.
void javolution.test.Perfometer< T >.printDetails | ( | ) |
Outputs the measurements in nanoseconds.
Definition at line 211 of file Perfometer.java.
References javolution.util.FastTable< E >.add(), javolution.context.LogContext.debug(), javolution.lang.Configurable< T >.get(), javolution.test.Perfometer< T >.SKIP, and javolution.test.Perfometer< T >.times.
|
abstractprotected |
Runs the code being benchmarked.
measure |
Referenced by javolution.test.Perfometer< T >.measure().
|
protected |
Validates the final result (after all iterations are completed).
Definition at line 263 of file Perfometer.java.
|
private |
Definition at line 91 of file Perfometer.java.
Referenced by javolution.test.Perfometer< T >.getDescription(), javolution.test.Perfometer< T >.Perfometer(), and javolution.test.Perfometer< T >.print().
|
static |
Hold the measurement duration in milliseconds (default 1000 ms).
Definition at line 58 of file Perfometer.java.
Referenced by javolution.test.Perfometer< T >.measure().
|
private |
Definition at line 92 of file Perfometer.java.
Referenced by javolution.test.Perfometer< T >.getInput(), javolution.test.Perfometer< T >.measure(), and javolution.test.Perfometer< T >.print().
|
static |
Indicates if perfometer measurements should be skipped ( e.g.
to skip performance measurements). When skipped, measure and print don't do anything.
Definition at line 78 of file Perfometer.java.
Referenced by javolution.test.Perfometer< T >.measure(), javolution.test.Perfometer< T >.print(), and javolution.test.Perfometer< T >.printDetails().
|
private |
Definition at line 93 of file Perfometer.java.
Referenced by javolution.test.Perfometer< T >.getAvgTimeInSeconds(), javolution.test.Perfometer< T >.getNbrOfIterations(), javolution.test.Perfometer< T >.getTimesInSeconds(), javolution.test.Perfometer< T >.getWCETinSeconds(), javolution.test.Perfometer< T >.getWorstCaseNumber(), javolution.test.Perfometer< T >.measure(), and javolution.test.Perfometer< T >.printDetails().