Package groovy.lang
Class BenchmarkInterceptor
java.lang.Object
groovy.lang.BenchmarkInterceptor
- All Implemented Interfaces:
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
Example usage can be seen here:
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 -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionafterInvoke
(Object object, String methodName, Object[] arguments, Object result) This code is executed after the method is optionally called.beforeInvoke
(Object object, String methodName, Object[] arguments) This code is executed before the method is optionally called.boolean
doInvoke()
getCalls()
Returns the raw data associated with the current benchmark run.void
reset()
Resets all the benchmark data on this object.Returns benchmark statistics as a List<Object[]>.
-
Field Details
-
calls
-
-
Constructor Details
-
BenchmarkInterceptor
public BenchmarkInterceptor()
-
-
Method Details
-
getCalls
Returns the raw data associated with the current benchmark run. -
reset
public void reset()Resets all the benchmark data on this object. -
beforeInvoke
Description copied from interface:Interceptor
This code is executed before the method is optionally called.- Specified by:
beforeInvoke
in interfaceInterceptor
- Parameters:
object
- receiver object for the method callmethodName
- name of the method to callarguments
- 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
Description copied from interface:Interceptor
This code is executed after the method is optionally called.- Specified by:
afterInvoke
in 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:
- 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 interfaceInterceptor
- Returns:
- whether the target method should be invoked at all.
-
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]
-