Package org.codehaus.commons.compiler.util

# Class Benchmark

java.lang.Object
org.codehaus.commons.compiler.util.Benchmark

public class Benchmark extends Object
Implements a scheme for benchmarking, i.e. for determining and/or reporting the time elapsed between the beginning and the end of an activity.

The measurement is done by invoking `begin()` and later calling `end()` whichs returns the time elapsed since the call to `begin()`.

Notice that calls to `begin()` and `end()` can be nested, and each call to `end()` refers to the matching `begin()` call. To ensure that all calls match, the preferred way to write a benchmark is

     ...
     Benchmark b = new Benchmark();
     ...
     b.begin();
     try {
         ....
     } finally {
         long ms = b.end();
     }

This code layout also makes it visually easy to write correct pairs of `begin()` / `end()` pairs.

The pair `beginReporting()` and `endReporting()` do basically the same, but report the benchmarking information through an internal `Benchmark.Reporter` object. The default `Benchmark.Reporter` prints its messages by `System.out.println()`.

Reporting is only enabled if the Benchmark object was created through `Benchmark(boolean)` with a `true` argument.

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static interface`
`Benchmark.Reporter`
Interface used to report messages.

## Constructor Summary

Constructors
Constructor
Description
`Benchmark(boolean reportingEnabled)`
Sets up a `Benchmark` with a default `Benchmark.Reporter` that reports to `System.out`.
`Benchmark(boolean reportingEnabled, Benchmark.Reporter reporter)`
Sets up a `Benchmark` with a custom `Benchmark.Reporter`.

## Method Summary

Modifier and Type
Method
Description
`void`
`begin()`
`void`
`beginReporting()`
Begins a benchmark (see `begin()`) and report the fact.
`void`
`beginReporting(String message)`
Begins a benchmark (see `begin()`) and report the fact.
`long`
`end()`
`void`
`endReporting()`
End a benchmark (see `end()`) and report the fact.
`void`
`endReporting(String message)`
Ends a benchmark (see `begin()`) and report the fact.
`void`
`report(String message)`
Reports the given message.
`void`
`report(String title, Object o)`
Reports the `title`, a colon, a space, and the pretty-printed `Object`.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### Benchmark

public Benchmark(boolean reportingEnabled)
Sets up a `Benchmark` with a default `Benchmark.Reporter` that reports to `System.out`.

### Benchmark

public Benchmark(boolean reportingEnabled, Benchmark.Reporter reporter)
Sets up a `Benchmark` with a custom `Benchmark.Reporter`.

## Method Details

### begin

public void begin()

See Also:
  - `Benchmark`

### end

public long end()

See Also:
  - `Benchmark`

### beginReporting

public void beginReporting()
Begins a benchmark (see `begin()`) and report the fact.

### beginReporting

public void beginReporting(String message)
Begins a benchmark (see `begin()`) and report the fact.

### endReporting

public void endReporting()
End a benchmark (see `end()`) and report the fact.

### endReporting

public void endReporting(String message)
Ends a benchmark (see `begin()`) and report the fact.

### report

public void report(String message)
Reports the given message.

### report

public void report(@Nullable String title, @Nullable Object o)
Reports the `title`, a colon, a space, and the pretty-printed `Object`.