mybatisplus的saveBatch用ArrayList还是LinkedList
·
最近在项目里看到很多的saveBatch(LinkedList)用法,以前一直都是用的ArrayList,从来没想过用LinkedList。所以探究下两种List在saveBatch下效率有什么区别
业务代码
private static void test() {
LinkedList<Entity> list = new LinkedList<>();
for (int i = 0; i < count; i++) {
list.add(new Entity());
}
saveBatch(list);
}
先看下saveBatch在mybatisplus中是什么执行逻辑
使用的增强for循环
增强for循环运行时使用的迭代器
那么问题就变成了ArrayList和LinkedList的add和迭代器效率问题
先看ArrayLis
插入是O(1),涉及扩容
迭代是O(n)
再看LinkedList

一样是O(1),不涉及扩容,但是每次插入会new Node对象
一样是O(n)
看起来效率是一样的
将上面的业务代码简化然后测试一下
count=十万效率基本一致
count=一百万时,ArrayList是LinkedList的十倍
在业务代码中不会有这么大数据量,性能基本没差
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)