Java 8 lambdas和匿名内部类之间的性能差异

csv*_*van 53 java performance closures java-8

在Java 8之前,可以通过使用匿名内部类来实现lambda功能.例如:

interface Lambda {
    void doStuff();
}

// ...

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

// ...

doWithCallback(new Lambda { 
    public void doStuff() { 
        // ... 
    } 
});
Run Code Online (Sandbox Code Playgroud)

在性能方面,仍然使用这种方法和使用新的Java 8 lambda之间有区别吗?

dka*_*zel 82

Oracle发布了一项研究,比较了Lambdas和匿名类之间的性能

参见JDK 8: Sergey Kuksenko的Lambda Performance Study,这是长达74张幻灯片.

总结:慢慢热身,但是当JIT将最坏情况内联到匿名类但速度更快时.