【发布时间】:2018-10-04 12:08:28
【问题描述】:
我希望像limit() 这样的简单中间流操作的开销很小。但这些示例之间的吞吐量差异实际上是显着的:
final long MAX = 5_000_000_000L;
LongStream.rangeClosed(0, MAX)
.count();
// throughput: 1.7 bn values/second
LongStream.rangeClosed(0, MAX)
.limit(MAX)
.count();
// throughput: 780m values/second
LongStream.rangeClosed(0, MAX)
.limit(MAX)
.limit(MAX)
.count();
// throughput: 130m values/second
LongStream.rangeClosed(0, MAX)
.limit(MAX)
.limit(MAX)
.limit(MAX)
.count();
// throughput: 65m values/second
我很好奇:吞吐量快速下降的原因是什么?它与链式流操作或我的测试设置是否一致? (我目前没有用过JMH,只是用秒表设置了一个快速实验)
【问题讨论】:
标签: java java-stream throughput