csvan csvan - 1 month ago 14
Java Question

Performance difference between Java 8 lambdas and anonymous inner classes

Before Java 8, lambda functionality could be achieved by using anonymous inner classes. For example:

interface Lambda {
void doStuff();
}

// ...

public void doWithCallback(Lambda callback) {
// ...
callback.doStuff();
}

// ...

doWithCallback(new Lambda {
public void doStuff() {
// ...
}
});


In terms of performance, is there a difference between still using this approach and using the new Java 8 lambdas?

Answer

Oracle has posted a study comparing performance between Lambdas and anonymous classes

See JDK 8: Lambda Performance Study by Sergey Kuksenko, which is 74 slides long.

Summary: slow to warm up but when JIT inlines it worst case just as fast as anonymous class but can be faster.

Comments