I am trying to find what speciality of lambda makes it different from conventional method. To find time consumption between lambda expression and Anonymous class, i have created a sample code and found that the time consumption of lambda is too high. Am i correct?
public class Test {
public static void main(String[] args) {
long str = System.nanoTime();
usingLambda();
long end = System.nanoTime();
System.out.println("Differnce: usingLambda: " + (end - str) + "ns");
long str2 = System.nanoTime();
usingAnonymousClass();
long end2 = System.nanoTime();
System.out.println("Differnce usingAnonymousClass: " + (end2 - str2) + "ns");
}
private static void usingLambda() {
Messagable lambda = () -> {
System.out.println("Test.callByLambda()");
};
lambda.sendMessage();
}
private static void usingAnonymousClass() {
Messagable anonymous = new Messagable() {
@Override
public void sendMessage() {
System.out.println("Test.usingAnonymousClass()");
}
};
anonymous.sendMessage();
}
}
interface Messagable {
public void sendMessage();
}
Output:
ParallelArraySorting.callByLambda()
Difference: usingLambda: 46650876ns
ParallelArraySorting.usingAnonymousClass()
Difference usingAnonymousClass: 447249ns