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.Mapcalls -
Constructor Summary
Constructors Constructor Description BenchmarkInterceptor() -
Method Summary
Modifier and Type Method Description java.lang.ObjectafterInvoke(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.ObjectbeforeInvoke(java.lang.Object object, java.lang.String methodName, java.lang.Object[] arguments)This code is executed before the method is called.booleandoInvoke()The call should be invoked separatelyjava.util.MapgetCalls()Returns the raw data associated with the current benchmark run.voidreset()Resets all the benchmark data on this object.java.util.Liststatistic()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:
beforeInvokein interfaceInterceptor- Parameters:
object- receiver object for the method callmethodName- name of the method to callarguments- 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:
afterInvokein interfaceInterceptor- Parameters:
object- receiver object for the called methodmethodName- name of the called methodarguments- arguments to the called methodresult- 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:
doInvokein interfaceInterceptor- 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]
-