Package groovy.lang

Class BenchmarkInterceptor

java.lang.Object
groovy.lang.BenchmarkInterceptor
All Implemented Interfaces:
Interceptor

public class BenchmarkInterceptor
extends java.lang.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 java.util.Map calls  
  • Constructor Summary

    Constructors
    Constructor Description
    BenchmarkInterceptor()  
  • Method Summary

    Modifier and Type Method Description
    java.lang.Object afterInvoke​(java.lang.Object object, java.lang.String methodName, java.lang.Object[] arguments, java.lang.Object result)
    This code is executed after the method is called.
    java.lang.Object beforeInvoke​(java.lang.Object object, java.lang.String methodName, java.lang.Object[] arguments)
    This code is executed before the method is called.
    boolean doInvoke()
    The call should be invoked separately
    java.util.Map getCalls()
    Returns the raw data associated with the current benchmark run.
    void reset()
    Resets all the benchmark data on this object.
    java.util.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 java.util.Map calls
  • Constructor Details

    • BenchmarkInterceptor

      public BenchmarkInterceptor()
  • Method Details

    • getCalls

      public java.util.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 java.lang.Object beforeInvoke​(java.lang.Object object, java.lang.String methodName, java.lang.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 java.lang.Object afterInvoke​(java.lang.Object object, java.lang.String methodName, java.lang.Object[] arguments, java.lang.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 java.util.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]