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.我的测试结果如下:

Java8新特性效率之Lambda

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

5.案例存在的问题

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

6.结论

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

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

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


你可能感兴趣的:(效率,java8,lambda)