还在用双层for循环吗?太慢了

前情提要

我们在开发中经常碰到这样的场景,查出两个 list 集合数据,需要根据他们相同的某个属性为连接点,进行聚合。但是平时我们使用的时候关注过性能吗?下面让我们一起来看看它的表现如何。

来个例子

我们现在有两个 List集合,需要根据他们相同的 personId 进行聚合处理,我们很容易想到的写法是这样的:


这样的代码是我们开发中最常用的一种方式,数据少的话没问题。如果数据量大的会很慢,接下来我做一个实验。看看在 1w 和 10w 的数据量下他的性能如何?

测试代码如下:


1w 耗时:83

10w 耗时:12549

仅仅 10w 的数据竟然达到了 12 秒多,可以看出它的性能是多么差了吧。

那怎么优化呢?我们可以把第二个 list 转为 map 的方式来做,示例如下:



接下来我们再进行下性能测试。

1w 耗时:55

10w 耗时:70

可以看出速度快了上百倍不止,如果还有小伙伴用第一种方式的话就赶紧优化了吧。

总结:如果数据量小于 5000,推荐就用双层 for 循环,如果大于 5000,则使用循环+map 的方式。

展开阅读全文

页面更新:2024-02-12

标签:前情   接点   写法   示例   提要   属性   性能   代码   方式   数据

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top