Optional<T>只是一个普通的通用类,其中包含类型T的引用。因此,它添加了一个间接层。该方法调用本身也不会很昂贵,因为该类是
final这样,因此可以避免动态分配。
可能会出现性能问题的唯一地方是使用大量此类实例时,但是即使那样,诸如a之类的性能也一点
Stream<Optional<String>>也不差。但是,当使用大量原始值时,由于这层间接调用需要非常频繁地实例化对象,因此您会发现使用
Stream<Integer>(或
Integer[])与原始专业化
IntStream(或
int[])会对性能造成影响
Integer。但是,使用诸如之类的东西,这是我们已经知道并要付出的代价
ArrayList<Integer>。
Stream<OptionalInt>/
显然会遇到相同的问题
OptionalInt[],因为OptionalInt本质上是一个具有
int字段和状态
boolean标记的类(与之不同的
Optional<T>是只能使用该
T字段),因此
Integer尽管大小更大,但还是很相似。当然,a
Stream<Optional<Integer>>会增加 两个 间接级别,相应地会导致性能双倍下降。



