素手烹茶|lambda表达式速度如何呢?看完这篇文章你就明白了( 二 )
public class LambdaTest {public static int N = 1_0000_0000;static List
好了不卖关子了 , 直接说结论吧 。 上面测试方法的问题在于 , 两种测试方法实际上根本不对等 。 lambda表达式的测试中 , 虽然方法体是空的 , 但是程序执行的时候 , 仍然会取出每一个元素 , 然后再应用空的方法 。 而循环测试中 , 真的只是执行了一个空循环 , 什么也没干 。 因此这种方法测出来的结论 , 完全不能证明lambda表达式比空循环慢 。
公平的测试方法应该是怎么样的呢?对于循环 , 一样要加上取元素和应用空方法的操作 。 为此在空循环中增加了一部分代码 。 这样测出来的结果 , lambda表达式和普通循环一样都是150毫秒左右 , 存在几毫秒的误差 。 这次的结果可以反映真实情况了 , 那就是两者没有什么速度差别 。 大家可以自己运行代码试试 。
更加实际的测试【素手烹茶|lambda表达式速度如何呢?看完这篇文章你就明白了】不管怎么说 , 用空的方法来测试lambda表达式和普通循环并不具有实际意义 。 所以我换了一种更加实际的方法 , 来看看lambda相较于普通的循环有没有优势所在 。
首先准备一个用户类 , 这里用到了lombok自动生成各种工具方法 , 为我们节约时间 。
然后准备一个随机类 , 准备用来生成10万个随机用户 , 来进行下一步的操作 。
接下来就是测试代码了 。 测试代码其实也很简单 , 随机生成一千万个用户 , 然后进行简单的筛选操作 , 选出来所有ID大于1000且为偶数 , 用户名以字母a开头的用户 。 两种测试结果输出各自的筛选结果数量 , 以保证结果是相同的 。 因为这次的测试比较复杂 , 所以可以看出实际的差异 。 在我的电脑上 , lambda表达式耗时100毫秒左右 , 而循环耗时80毫秒左右 。 可见lambda表达式虽然比循环慢一点 , 但是差距很小 , 在千万次循环的级别仅差几十毫秒 , 对程序的运行基本没有什么影响 。
public class LambdaTest {public static int N = 1000_0000;static List
推荐阅读
- 素手烹茶|美妆品牌纷纷开设美团点评“品牌专区”,它的吸引力到底是什么?
- 技术编程5万字:Stream和Lambda表达式最佳实践2
- JAVA研发狄仁杰 5万字:Stream和Lambda表达式最佳实践2
- 素手烹茶|一加 8 Pro智能手机语音通话测评报告 「Soomal」,OnePlus
- 素手烹茶 一加 8 Pro智能手机语音通话测评报告 「Soomal」,OnePlus
- 素手烹茶|OnePlus 一加 8 Pro智能手机语音通话测评报告「Soomal」
- 素手烹茶|蚂蚁金服全球已有13亿用户群体,估值赶超美国花旗银行?
- 素手烹茶|国产操作系统为何发展不起来?中国专家:因为微软用“盗版”战术
- 素手烹茶|转型时期的收音机新产品——美国Kaito KA1121评测
- 素手烹茶|苹果iPhone12电池缩水,还不配充电头,果粉要失望了