Package groovy.lang

Class 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 can be seen here:
     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  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      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 optionally 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 optionally called.
      boolean doInvoke()  
      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 Detail

      • calls

        protected java.util.Map calls
    • Constructor Detail

      • BenchmarkInterceptor

        public BenchmarkInterceptor()
    • Method Detail

      • 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)
        Description copied from interface: Interceptor
        This code is executed before the method is optionally 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:
        any arbitrary result that replaces the result of the original method call only if doInvoke() returns false and afterInvoke() 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)
        Description copied from interface: Interceptor
        This code is executed after the method is optionally 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:
        any arbitrary result that can replace the result of the original method call. Typically, the result parameter is returned.
      • doInvoke

        public boolean doInvoke()
        Specified by:
        doInvoke in interface Interceptor
        Returns:
        whether the target method should be invoked at all.
      • 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]