Java8新特性效率之Lambda

1.我的环境如下:

CPU:I5-2430M 2.4GHz 双核四线程

内存:8G

JDK版本:1.8.0_25

2.生成数据的核心代码

一个Student类,只有一个age属性,一个方法,是根据参数生成一定数量的数据

public static List<Student> getStudent(long count)
{
    List<Student> lists = new ArrayList<>();
    for(long i = 1; i<= count;i++)
        lists.add(new Student((int)(Math.random() * 100)));
    return lists;
}

3.测试代码

/** 匿名内部类测试 */
public static void Filter1(List<Student> lists)
{
	long start = System.currentTimeMillis();
	Stream<Student> man1 = lists.stream().filter(
		new Predicate<Student>()
		{
			public boolean test(Student student)
			{
				return(student.getAge() >= 18);
			}
		});
	long end = System.currentTimeMillis();
	System.out.println(end - start);
}
/** lambda测试 */
public static void Filter2(List<Student> lists)
{
	long start = System.currentTimeMillis();
	Stream<Student> man2 = lists.stream().filter(student -> {return student.getAge() >= 18;});
	long end = System.currentTimeMillis();
	System.out.println(end - start);
}
public static void main(String[] args)
{
	List<Student> lists = DataDao.getStudent(1000000);
	System.out.println("数据生成完毕!");
	//每次开启一个,保证运行情况尽量一致
	//Filter1(lists);
	Filter2(lists);	
}

4.我的测试结果如下:

155212_368m_585884.jpg

从测试结果可以得出,Lambda还是比较耗时的

5.案例存在的问题

每次都是生成数据,每个测试方法数据不完全一样,所以每次运行3次,进行参考

6.结论

Java8有了Lambda之后,确实挺方便的,但是运行效率并没有原来匿名内部类的效率高,所以在要求效率不高,但是代码美观的时候,建议使用Lambda,在要求高效率的时候,可以考虑使用原来匿名内部类,

我相信Java的Lambda语法会越来越完善的,效率也会提高的!

由于我的水平有限,如果有什么问题或者有更好的测试方法,欢迎大家留言!


转载于:https://my.oschina.net/Jkiss/blog/355057

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值