Java 8 流性能对比。传统集合
您最近涉足 Java 8 并进行了非正式基准测试,以将其 Stream API 与经典集合的性能进行比较。您的测试涉及过滤整数列表、提取偶数的平方根并将结果存储在 Double 列表中。然而,您质疑测试的有效性,并渴望澄清真正的性能影响。
评估基准测试
您的初步结果,表明流比收集慢,引发了担忧。为了确保更可靠的评估,必须解决潜在的错误并进行公平的测试。以下是一些注意事项:
- 使用 LinkedList:LinkedList 不是结果列表的最佳选择,因为它缺乏有效的随机访问。考虑使用 ArrayList 代替。
- 基准测试方法:手动基准测试可能容易出现不准确的情况。利用像 JMH(Java Microbenchmarking Harness)这样的基准测试框架来提供更精确和可靠的测量。
正确的基准测试结果
根据这些建议,让我们重新审视使用 JMH 和改进的基准测试策略进行性能评估:
@OutputTimeUnit(TimeUnit.NANOSECONDS) @BenchmarkMode(Mode.AverageTime) @OperationsPerInvocation(StreamVsVanilla.N) public class StreamVsVanilla { public static final int N = 10000; static List<integer> sourceList = new ArrayList(); static { for (int i = 0; i vanilla() { List<double> result = new ArrayList(sourceList.size() / 2 + 1); for (Integer i : sourceList) { if (i % 2 == 0){ result.add(Math.sqrt(i)); } } return result; } @Benchmark public List<double> stream() { return sourceList.stream() .filter(i -> i % 2 == 0) .map(Math::sqrt) .collect(Collectors.toCollection( () -> new ArrayList(sourceList.size() / 2 + 1))); } }</double></double></integer>
结果:
Benchmark Mode Samples Mean Mean error Units StreamVsVanilla.stream avgt 10 17.588 0.230 ns/op StreamVsVanilla.vanilla avgt 10 10.796 0.063 ns/op
结果
与初步结果,JMH 基准测试清楚地表明,在此特定场景中,传统收集方法明显快于流方法。
结论
基于这些改进的基准测试结果,我们可以得出结论:
- 流本质上并不比集合慢。然而,在某些用例中,它们的开销可能超过其好处,例如简单的过滤和映射操作。
- 流在代码简单性和可维护性方面提供了显着的优势。它们简化了数据处理管道并减少了样板代码。
- 对于性能关键的代码路径,始终建议进行彻底的基准测试并考虑应用程序的具体要求。
以上是对于简单的操作,流总是比传统集合慢吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

本文讨论了使用Maven和Gradle进行Java项目管理,构建自动化和依赖性解决方案,以比较其方法和优化策略。

本文使用Maven和Gradle之类的工具讨论了具有适当的版本控制和依赖关系管理的自定义Java库(JAR文件)的创建和使用。

本文讨论了使用咖啡因和Guava缓存在Java中实施多层缓存以提高应用程序性能。它涵盖设置,集成和绩效优势,以及配置和驱逐政策管理最佳PRA

本文讨论了使用JPA进行对象相关映射,并具有高级功能,例如缓存和懒惰加载。它涵盖了设置,实体映射和优化性能的最佳实践,同时突出潜在的陷阱。[159个字符]

Java的类上载涉及使用带有引导,扩展程序和应用程序类负载器的分层系统加载,链接和初始化类。父代授权模型确保首先加载核心类别,从而影响自定义类LOA


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

Atom编辑器mac版下载
最流行的的开源编辑器

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

禅工作室 13.0.1
功能强大的PHP集成开发环境