Java Lambda 会影响性能吗?

# 测试代码LamdaTest.java

import java.util.*;class LamdaTest {static volatile List<Integer> integers = new ArrayList<Integer>();// 普通 for 循环测试public static int forLoopInteger() {int total = 0;for (int i = 0; i < integers.size(); i++) {total += integers.get(i);}System.out.println("total: " + total);return total;}// forEach 循环测试public static int forOfInteger() {int total = 0;for (Integer n : integers) {total += n;}System.out.println("total: " + total);return total;}// lamda map循环测试public static int lambdaInteger() {int total = 0;integers.forEach(n -> {// System.out.println("n:" + n);});// total = integers.stream().reduce(0, (a, b) -> {// return a + b;// });System.out.println("total: " + total);return total;}public static void main(String[] args) {// 初始化integers,填充内容for (int i = 0; i < 100000; i++) {integers.add(i);}long startTime = 0L;long costTime = 0L;System.out.println("forLoopInteger start: ");startTime = System.currentTimeMillis();forLoopInteger();costTime = System.currentTimeMillis() - startTime;System.out.println("forLoopInteger cost: " + costTime);System.out.println("====");startTime = System.currentTimeMillis();System.out.println("forOfInteger start: ");forOfInteger();costTime = System.currentTimeMillis() - startTime;System.out.println("forOfInteger cost: " + costTime);System.out.println("====");startTime = System.currentTimeMillis();System.out.println("lambdaInteger start: ");lambdaInteger();costTime = System.currentTimeMillis() - startTime;System.out.println("lambdaInteger cost:  " + costTime);}
}/*** // 测试1结果* java -version* java version "1.8.0_401"* Java(TM) SE Runtime Environment (build 1.8.0_401-b10)* Java HotSpot(TM) 64-Bit Server VM (build 25.401-b10, mixed mode)* * 第一组:* forLoopInteger start:* total: 704982704* forLoopInteger cost: 6* ====* forOfInteger start:* total: 704982704* forOfInteger cost: 7* ====* lambdaInteger start:* total: 0* lambdaInteger cost: 50* * 第二组:* forLoopInteger start:* total: 704982704* forLoopInteger cost: 5* ====* forOfInteger start:* total: 704982704* forOfInteger cost: 5* ====* lambdaInteger start:* total: 0* lambdaInteger cost: 46* * 第三组:* forLoopInteger start:* total: 704982704* forLoopInteger cost: 5* ====* forOfInteger start:* total: 704982704* forOfInteger cost: 7* ====* lambdaInteger start:* total: 0* lambdaInteger cost: 47*//*** // 测试2结果* java -version* openjdk version "11.0.4" 2019-07-16 LTS* OpenJDK Runtime Environment 18.9 (build 11.0.4+11-LTS)* OpenJDK 64-Bit Server VM 18.9 (build 11.0.4+11-LTS, mixed mode, sharing)* * 第一组:* forLoopInteger start:* total: 704982704* forLoopInteger cost: 115* ====* forOfInteger start:* total: 704982704* forOfInteger cost: 40* ====* lambdaInteger start:* total: 704982704* lambdaInteger cost: 166* * 第二组:* forLoopMaxInteger start:* total: 704982704* forLoopMaxInteger cost: 55* ====* forOfMaxInteger start:* total: 704982704* forOfMaxInteger cost: 27* ====* lambdaMaxInteger start:* total: 704982704* lambdaMaxInteger cost: 31* * 第三组:* forLoopMaxInteger start:* total: 704982704* forLoopMaxInteger cost: 51* ====* forOfMaxInteger start:* total: 704982704* forOfMaxInteger cost: 29* ====* lambdaMaxInteger start:* total: 704982704* lambdaMaxInteger cost: 29*//*** // 测试3结果* java -version* java version "10.0.1" 2018-04-17* Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10)* Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)* * 第一组:* java LamdaTest* forLoopInteger start:* total: 704982704* forLoopInteger cost: 33* ====* forOfInteger start:* total: 704982704* forOfInteger cost: 6* ====* lambdaInteger start:* total: 0* lambdaInteger cost: 7* * 第二组:* forLoopInteger start:* total: 704982704* forLoopInteger cost: 33* ====* forOfInteger start:* total: 704982704* forOfInteger cost: 6* ====* lambdaInteger start:* total: 0* lambdaInteger cost: 8* * 第三组:* forLoopInteger start:* total: 704982704* forLoopInteger cost: 35* ====* forOfInteger start:* total: 704982704* forOfInteger cost: 8* ====* lambdaInteger start:* total: 0* lambdaInteger cost: 9*/

结论

通过以上测试,JDK1.8下lambda确实有性能问题,但之后版本lambda做了性能优化,不会有性能问题了,甚至更快。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/17704.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

驱动未来:IT行业的现状与发展趋势

前言 随着技术的不断进步&#xff0c;IT行业已成为推动全球经济和社会发展的关键力量。从云计算、大数据、人工智能到物联网、5G通信和区块链&#xff0c;这些技术正在重塑我们的生活和工作方式。本文将探讨IT行业的现状和未来发展趋势&#xff0c;并邀请行业领袖、技术专家和…

Follow Your Pose: Pose-Guided Text-to-Video Generation using Pose-Free Videos

清华深&港科&深先进&Tencent AAAI24https://github.com/mayuelala/FollowYourPose 问题引入 本文的任务是根据文本来生成高质量的角色视频&#xff0c;并且可以通过pose来控制任务的姿势&#xff1b;当前缺少video-pose caption数据集&#xff0c;所以提出一个两…

Java的上下转型与多态

上下转型 首先&#xff0c;定义一个父类Person // 父类 class Person {public void run(){System.out.println("person 中的 run");}public void eat(){System.out.println("Person 中的 eat");}}接着定义一个继承自父类的子类Student: // 子类 class S…

拿捏数据结构- 链式二叉树

链式二叉树的概念&#xff1a; 链式二叉树解决的是非完全二叉树解决不了的问题 什么意思呢&#xff0c;简单的说就是&#xff0c;链式二叉树 可以是下面三种二叉树 但是非链式二叉树只能是前两种 链式二叉树的存储 节点结构&#xff1a;首先定义一个结构体或类来表示二叉树的节…

机器学习-7-机器学习中常用的可视化方式总结

参考通透!!监督学习和无监督学习全总结! 参考机器学习中的可视化 1 监督学习和无监督学习 监督学习和无监督学习,它们之间的主要区别在于训练数据的标签信息是否提供。 1.1 概述 一、监督学习(Supervised Learning): (1)标签信息: 监督学习使用带有标签的训练数据。这…

单元测试的实现方式

单元测试的实现方式包括&#xff1a;人工静态检查、动态执行跟踪 人工静态检查 人工静态检查是一种单元测试实现方式&#xff0c;它主要依赖开发人员的人工代码审查和静态分析工具来识别潜在的代码问题。 代码审查&#xff1a;开发人员通过仔细检查代码来发现潜在的问题。他…

不怕YOLOv10高歌猛进,我有YOLOv8稳扎稳打

YOLOv10 出来有几天时间了&#xff0c;这次我没有选择第一时间出文章解析&#xff0c;如此频繁的发布数字版本的 YOLO 着实让人头疼&#xff0c;虽然数字的更新并非旧版技术的过时&#xff0c; 但是这肯定会让很多在校同学增加很多焦虑情绪。这里还是请大家辩证看待。 v10 这次…

解密消息队列的复制魔法:RocketMQ vs Kafka

解密消息队列的复制魔法&#xff1a;RocketMQ vs Kafka 今天我们来聊聊一个在消息队列世界中至关重要的主题&#xff1a;消息复制。消息复制不仅能防止消息丢失&#xff0c;还能确保系统的高可用性。即使某个节点宕机了&#xff0c;其他节点依然可以继续工作。那么&#xff0c…

区间选点问题-贪心-C++

问题&#xff1a; 给定 &#x1d441; 个闭区间 [ai,bi]&#xff0c;请你在数轴上选择尽量少的点&#xff0c;使得每个区间内至少包含一个选出的点。 输出选择的点的最小数量。 位于区间端点上的点也算作区间内。 输入格式 第一行包含整数 &#x1d441;&#xff0c;表示区间数…

CSS文本粒子动画特效之爱心粒子文字特效-Canvas

1. 效果图 2.完整代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><style>body,html {margin: 0;paddin…

order by工作过程和优化

工作过程 order by 是由优化器决定的&#xff0c;如果优化器认为filesort速度快&#xff0c;那么走filesort排序&#xff0c;如果优化器认为索引速度快&#xff0c;那么走索引排序。

有一个3x4的矩阵,求矩阵中所有元素中的最大值。要求用函数处理

解此题的算法已在之前的文章中介绍&#xff0c;详见&#xff1a;https://mp.csdn.net/mp_blog/creation/editor/139181787 编写程序&#xff1a; 运行结果&#xff1a;

常用的字符串方法

length() 返回字符串的长度。 let str "HelloWorld"; console.log(str.length); // 10charAt() 返回指定位置的字符。参数&#xff1a;位置索引。 let str "HelloWorld"; console.log(str.charAt(5)); // Wconcat() 连接字符串。参数&#xff1a;一…

昵称生成器

package mainimport ("math/rand" )// 随机昵称 形容词 var nicheng_tou []string{"迷你的", "鲜艳的", "飞快的", "真实的", "清新的", "幸福的", "可耐的", "快乐的", "冷…

卷径计算(PID输出补偿法 SCL源代码)

卷径计算有很多方法,这里我们提供另一个思路,这里我们采用的是通过速度控制间接控制张力通过线速度和系统卷径我们可以计算出我们的速度前馈量(主速度)。具体收放卷前馈量计算可以参考下面文章链接: 收放卷前馈量计算FC(梯形图+SCL代码)-CSDN博客文章浏览阅读584次。这篇博…

【数据分析面试】55. 寻找双词组 (Python)

题目&#xff1a; 寻找双词组 &#xff08;Python&#xff09; 编写一个名为 find_bigrams 的函数&#xff0c;该函数接收一个句子或段落的字符串&#xff0c;并按顺序返回其所有双词组的列表。 注意&#xff1a; 双词组是指连续的两个单词。 示例&#xff1a; 输入&#x…

JavaScript(ES6)入门

ES6 1、介绍 ECMAScript 6&#xff08;简称ES6&#xff09;是于2015年6月正式发布的JavaScript 语言的标准&#xff0c;正式名为ECMAScript 2015&#xff08;ES2015&#xff09;。它的目标是使得JavaScript语言可以用来编写复杂的大型应用程序&#xff0c;成为企业级开发语言。…

Dolphinscheduler不重启加载Oracle驱动

转载自刘茫茫看山 问题背景 某天我们的租户反馈数据库连接缺少必要的驱动&#xff0c;我们通过日志查看确实是缺少部分数据库的驱动&#xff0c;因为DolphinScheduler默认只带了Oracle和MySQL的驱动&#xff0c;并且需要将pom文件中的test模式去掉才可以在打包的时候引入。我…

Unity Dotween 定位点的制作

目录 前言 一、动画预览 二、动画拆分 三、素材准备 四、曲线 OutCirc详解 五、速度分类详解 六、代码 七、组件和设置 八、作者的话 前言 我答应我的粉丝接下来更新Dotween系列&#xff0c;但是我一直没想好&#xff0c;从哪里开始讲。 Dotween的安装我就跳过了&…

QtCreator调试运行工程报错,无法找到相关库的的解决方案

最新在使用国产化平台做qt应用开发时&#xff0c;总是遇到qtcreator内调试运行 找不到动态库的问题&#xff0c;为什么会出现这种问题呢&#xff1f;明明编译的时候能够正常通过&#xff0c;运行或者调试的时候找不到相关的库呢&#xff1f;先说结论&#xff0c;排除库本身的问…