Package: groovy.lang

## [Java] Class BenchmarkInterceptor

- groovy.lang.BenchmarkInterceptor

- All Implemented Interfaces and Traits:
    Interceptor

      public class BenchmarkInterceptor
      extends Object

  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
    Modifiers | Name | Description
    --- | --- | ---
    `protected Map` | `calls` |

  - ### Methods Summary

    Methods
    Type | Name and description
    --- | ---
    `Object` | `afterInvoke(Object object, String methodName, Object[] arguments, Object result)`
    `Object` | `beforeInvoke(Object object, String methodName, Object[] arguments)`
    `boolean` | `doInvoke()`
    `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[]>.

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class Object` | `wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll`

- - ### Field Detail

    - #### protected Map calls

  - ### Method Detail

    - #### public Object afterInvoke(Object object, String methodName, Object[] arguments, Object result)

    - #### public Object beforeInvoke(Object object, String methodName, Object[] arguments)

    - #### public boolean doInvoke()

    - #### public Map getCalls()

      Returns the raw data associated with the current benchmark run.

    - #### public void reset()

      Resets all the benchmark data on this object.

    - #### 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]