在JVM可以优化这段代码
请问这个代码获得Java编译器或JVM优化,我特别要求,如果这这样写的代码的Java做优化
Stream.of(1, 2, 3)
.map(i -> i + 1)
.map(i -> i + 1)
.map(i -> i + 1);
喜欢的东西
Stream.of(1, 2, 3)
.map(i -> i + 3)
或者是更积极,更与循环可能可以提高性能基本替换此。
Clojure中有传感器的概念,它是一种优化,你可以做撰写减少,能功能集成到一个单一的功能,并删除懒传播的开销。 JVM的可转导的一些功能在一个流畅的API?
例如,如果我们有一个装饰接口,Java流
decor-map(decor-map(base-map (i -> i + 1), i -> i +1), i -> i + 1)
然后我假设编译可以以某种方式设法转导装饰地图。但是,这怎么可能在一个流畅的API?
javac的真的没有做太多优化,据我所知,这真的只做constant folding。
换句话说:所有的源码编译成机器代码时,许多其他语言,如C ++直接套用复杂的优化选项... javac还没有做任何的那个。
为什么:因为发生在运行时(它是有道理的),由JIT。
结论:你不担心性能的Java代码在“事物的源代码一面”。您尝试写易简单的代码,短方法,使JIT可以做到这一点魔法和内嵌了这一切,并把它变成被优化以支持您的实际使用模式的机器代码。