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.pswp.cn/bicheng/17704.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/17704.shtml
英文地址,請注明出處:http://en.pswp.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;排除庫本身的問…