[FastMethod] ist ein Werkzeug zum schnellen, dynamischen Aufrufen von Methoden. [FastMethod] ist aus dem [Intersult Maven Repository] zu beziehen.
!!!Hintergrund
Der Aufruf von Methoden durch die [Java] Reflection API mittels der Methode java.lang.reflect.Method.invoke(...) führt zu Zeitverlust. Daher wurde [FastMethod] entwickelt, damit werden dynamische Methodenaufrufe ebenso schnell wie statische aufrufe. Voraussetzung ist, dass die Methode häufig aufgerufen wird.
!!!Beispiel
Es werden zwei im Grunde gleiche Code-Abschnitte verglichen, der eine mit Method, der andere mit FastMethod:
{{{
public static final long N = 10000000000L;
public void testFastMethod() throws Exception {
FastMethod method = FastMethod.create(FastMethodTest.class, "someMethod");
method.invoke(this);
long begin = System.nanoTime();
for (long i = 0; i < N; ++i) {
method.invoke(this);
}
long duration = System.nanoTime() - begin;
System.out.println("FastMethod: " + duration / 1000000000D + " s");
}
public void testMethod() throws Exception {
Method method = FastMethodTest.class.getDeclaredMethod("someMethod");
method.invoke(this);
long begin = System.nanoTime();
for (long i = 0; i < 10000000000L; ++i) {
method.invoke(this);
}
long duration = System.nanoTime() - begin;
System.out.println("Method: " + duration / 1000000000D + " s");
}
}}}
Ergebnis ist eine Beschleunigung um etwa den Faktor 16:
{{{
Method: 100.797758873 s
FastMethod: 6.42633348 s
}}}