欢迎光临
我们一直在努力

增强for循环快捷键,增强for循环迭代迭代器

来源:blog.csdn.net/asdflwlong/article/details/81538551

最近新的项目使用jdk1.8版本,于是乎博主想多使用一些lambda的写法,但是对于lambda并不是很了解所以在网上查了一些性能方面的资料,结果瞬间心凉,多数回答为lambda forEach循环性能要比传统循环差,性能甚至差出十几倍。然而,经过博主的测试那些回答是错误的。

性能对比的结论为 lambda forEach>增强for,以下给出测试数据。

public?static?void?main(String[]?args)?{????????List<User>?userList?=?initList(10000);????????for?(int?i?=?1;?i?<?11;?i++)?{????????????System.out.println(“——————–第”?+?i?+?”次”);????????????long?t1?=?System.nanoTime();????????????testLambda(userList);????????????long?t2?=?System.nanoTime();????????????testForeach(userList);????????????long?t3?=?System.nanoTime();????????????System.out.println(“lambda—“?+?(t2?-?t1)?/?1000?+?”μs”);????????????System.out.println(“增强for–“?+?(t3?-?t2)?/?1000?+?”μs”);????????}????}?????/**?????*?增强for测试?????*?@param?userList?????*/????private?static?void?testForeach(List<User>?userList)?{????????for?(User?user?:?userList)?{????????????user.hashCode();????????}????}??????/**?????*?lambda?forEach测试?????*?@param?userList?????*/????private?static?void?testLambda(List<User>?userList)?{????????userList.forEach(user?->?user.hashCode());????}?????/**?????*?初始化测试集合?????*?@param?size?????*?@return?????*/????private?static?List<User>?initList(int?size)?{????????List<User>?userList?=?new?ArrayList<>();????????for?(int?i?=?0;?i?<?size;?i++)?{????????????userList.add(new?User(“user”?+?i,?String.valueOf(i)));????????}????????return?userList;????}

输出

——————–第1次lambda—207637μs增强for–5210μs——————–第2次lambda—767μs增强for–1739μs——————–第3次lambda—707μs增强for–3118μs——————–第4次lambda—716μs增强for–1347μs——————–第5次lambda—1078μs增强for–1559μs——————–第6次lambda—773μs增强for–1382μs——————–第7次lambda—756μs增强for–1213μs——————–第8次lambda—535μs增强for–840μs——————–第9次lambda—270μs增强for–576μs——————–第10次lambda—434μs增强for–513μs

此时可以看出在第一次的时候两者性能相差40倍,这可能也是多数人认为它性能较差的原因,但是再后面的执行当中几乎都是lambda的执行速度快,所以博主觉得,lambda的forEach循环在首次执行的时候会初始化部分内容,从而导致执行过慢,在后续的执行当中由于不需要再次进行初始化,所以才展现出真正的实力。

关于其他方面的测试,有兴趣的同学可以自行测试。

推荐好文

强大,10k+点赞的 SpringBoot 后台管理系统竟然出了详细教程!

分享一套基于SpringBoot和Vue的企业级中后台开源项目,代码很规范!

能挣钱的,开源 SpringBoot 商城系统,功能超全,超漂亮

91594787

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。