Package groovy.lang

# Class BenchmarkInterceptor

java.lang.Object
groovy.lang.BenchmarkInterceptor

All Implemented Interfaces:
  `Interceptor`

public class BenchmarkInterceptor extends Object implements Interceptor
Interceptor that registers the timestamp of each method call before and after invocation. The timestamps are stored internally and can be retrieved through the with the

    getCalls()

and

    statistic()

API.

Example usage:

     def proxy = ProxyMetaClass.getInstance(ArrayList.class)
     proxy.interceptor = new BenchmarkInterceptor()
     proxy.use {
         def list = (0..10000).collect{ it }
         4.times { list.size() }
         4000.times { list.set(it, it+1) }
     }
     proxy.interceptor.statistic()

Which produces the following output:

     [[size, 4, 0], [set, 4000, 21]]

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected Map`
  `calls`
  Recorded call timings keyed by method name.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `BenchmarkInterceptor()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Object`
  `afterInvoke(Object object, String methodName, Object[] arguments, Object result)`
  This code is executed after the method is called.
  `Object`
  `beforeInvoke(Object object, String methodName, Object[] arguments)`
  This code is executed before the method is called.
  `boolean`
  `doInvoke()`
  The call should be invoked separately
  `Map`
  `getCalls()`
  Returns the raw data associated with the current benchmark run.
  `void`
  `reset()`
  Resets all the benchmark data on this object.
  `List`
  `statistic()`
  Returns benchmark statistics as a List<Object[]>.

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

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

- ## Field Details

  - ### calls

    protected Map calls
    Recorded call timings keyed by method name.

- ## Constructor Details

  - ### BenchmarkInterceptor

    public BenchmarkInterceptor()

- ## Method Details

  - ### getCalls

    public Map getCalls()
    Returns the raw data associated with the current benchmark run.

  - ### reset

    public void reset()
    Resets all the benchmark data on this object.

  - ### beforeInvoke

    public Object beforeInvoke(Object object, String methodName, Object[] arguments)
    This code is executed before the method is called.
    Specified by:
      `beforeInvoke` in interface `Interceptor`
    Parameters:
      `object` - receiver object for the method call
      `methodName` - name of the method to call
      `arguments` - arguments to the method call
    Returns:
      null relays this result.

  - ### afterInvoke

    public Object afterInvoke(Object object, String methodName, Object[] arguments, Object result)
    This code is executed after the method is called.
    Specified by:
      `afterInvoke` in interface `Interceptor`
    Parameters:
      `object` - receiver object for the called method
      `methodName` - name of the called method
      `arguments` - arguments to the called method
      `result` - result of the executed method call or result of beforeInvoke if method was not called
    Returns:
      result

  - ### doInvoke

    public boolean doInvoke()
    The call should be invoked separately
    Specified by:
      `doInvoke` in interface `Interceptor`
    Returns:
      true

  - ### statistic

    public List statistic()
    Returns benchmark statistics as a List<Object[]>. AccumulateTime is measured in milliseconds and is as accurate as System.currentTimeMillis() allows it to be.
    Returns:
      a list of lines, each item is [methodname, numberOfCalls, accumulatedTime]