lamda循环_普通for循环,foreach循环,lambda循环性能对比

最近学习使用lambda表达式的时候,碰到lambda的内部迭代循环,书写十分方便,但是不知道执行效率如何,于是自己进行了一个测试.

demo代码:

packagecom.example.demo;importio.swagger.models.auth.In;importjava.util.ArrayList;importjava.util.LinkedList;importjava.util.List;/*** 普通for循环,foreach增强循环,lambda表达式foreach性能的测试*/

public classForEachTest {public static voidmain(String[] args) {//System.out.println("ArrayList第一次");//testArrayList();//System.out.println("ArrayList第二次");//testArrayList();//System.out.println("ArrayList第三次");//testArrayList();

System.out.println("LinkedList第一次");

testLinkedList();

System.out.println("LinkedList第二次");

testLinkedList();

System.out.println("LinkedList第三次");

testLinkedList();

}/*** 初始化测试集合ArrayList

*@paramsize

*@return

*/

public static List initArrayList(intsize){

List al = new ArrayList<>();for (int i = 0; i < size; i++) {

al.add(newUser());

}returnal;

}/*** 初始化测试集合LinkedList

*@paramsize

*@return

*/

public static List initLinkedList(intsize){

LinkedList ll = new LinkedList<>();for (int i = 0; i < ll.size(); i++) {

ll.add(newUser());

}returnll;

}/*** 普通for循环

*@paramusers*/

public static void testFor(Listusers){for (int i = 0; i < users.size(); i++) {

users.get(i).hashCode();

}

}/*** foreach增强循环

*@paramusers*/

public static void testForEach(Listusers){for(User user : users) {

user.hashCode();

}

}/*** lambda表达式foreach循环

*@paramusers*/

public static void testLambda(Listusers){

users.forEach(user->user.hashCode());

}/*** 测试方法ArrayList*/

public static voidtestArrayList(){

List users = initArrayList(10000000);long time1 =System.nanoTime();

testFor(users);long time2 =System.nanoTime();

testForEach(users);long time3 =System.nanoTime();

testLambda(users);long time4 =System.nanoTime();

System.out.println("普通for循环所需时间: " + (time2 - time1) + "mμs");

System.out.println("foreach循环所需时间: " + (time3 - time2) + "mμs");

System.out.println("lambda 循环所需时间: " + (time4 - time3) + "mμs");

}/*** 测试方法LinkedList*/

public static voidtestLinkedList(){

List users = initLinkedList(10000000);long time1 =System.nanoTime();

testFor(users);long time2 =System.nanoTime();

testForEach(users);long time3 =System.nanoTime();

testLambda(users);long time4 =System.nanoTime();

System.out.println("普通for循环所需时间: " + (time2 - time1) + "mμs");

System.out.println("foreach循环所需时间: " + (time3 - time2) + "mμs");

System.out.println("lambda 循环所需时间: " + (time4 - time3) + "mμs");

}

}

ArrayList千万元素集合测试结果:

ArrayList第一次

普通for循环所需时间: 302337344mμs

foreach循环所需时间: 50572324mμs

lambda 循环所需时间: 85110328mμs

ArrayList第二次

普通for循环所需时间: 436025007mμs

foreach循环所需时间: 40059824mμs

lambda 循环所需时间: 32511582mμs

ArrayList第三次

普通for循环所需时间: 442201775mμs

foreach循环所需时间: 33280390mμs

lambda 循环所需时间: 29819309mμs

根据测试结果可知:

首次遍历ArrayList集合,普通for循环效率

实际使用推荐foreach和lambda.【可将lambda表达式的初始化放到项目启动的过程中,这样可以大大提高lambda表达式的性能。】

LinkedList千万元素集合测试结果:

LinkedList第一次

普通for循环所需时间: 5452mμs

foreach循环所需时间: 273590mμs

lambda 循环所需时间: 49361539mμs

LinkedList第二次

普通for循环所需时间: 641mμs

foreach循环所需时间: 2887mμs

lambda 循环所需时间: 1925mμs

LinkedList第三次

普通for循环所需时间: 321mμs

foreach循环所需时间: 1603mμs

lambda 循环所需时间: 963mμs

根据测试结果可知:

首次遍历LinkedList集合,lambda效率

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值