gpt4 book ai didi

java - IntStream 如何避免隐性装箱成本

转载 作者:行者123 更新时间:2023-11-29 04:08:53 26 4
gpt4 key购买 nike

当你有

Stream.of(1 ,10).reduce(0,(v1, v2) -> v1 + v2);

对比

IntStream.of(1 ,10).reduce(0,(v1, v2) -> v1 + v2);

`IntStream 是怎么做到的?避免隐藏的拳击费用?

为什么装箱在性能方面很昂贵?

最佳答案

IntStreamStream<T> 的特化哪个过程int primitive值(value)观。

IntStream接口(interface):

IntStream filter(IntPredicate predicate);
IntStream map(IntUnaryOperator mapper);
...

可以看到这个接口(interface)只使用了int primitive Predicate 的专业版, Function , Consumer ...所以它不需要装箱来处理 int(因为它直接与 int 一起操作)

关于autoboxing的性能开销,可以引用java guide :

It is not appropriate to use autoboxing and unboxing for scientific computing, or other performance-sensitive numerical code

这是因为,每次调用操作时都需要 intInteger或输入 intInteger容器,编译器会为您注入(inject)一个 box/unbox 方法调用。

对于正常操作而言,性能相当微不足道,但如果您有密集的循环或时间关键的代码行,那么您应该避免自动装箱。

关于java - IntStream 如何避免隐性装箱成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56404114/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com