lambda與foreach的效能比對

2021-08-27 11:18:03 字數 1502 閱讀 3792

public class test 

public void test1()

// for迴圈

long starttime = system.currenttimemillis();

for (object s : list)

long endtime = system.currenttimemillis();

system.out.println("for迴圈用時:" + (endtime - starttime));

// lambda 表示式

long starttime1 = system.currenttimemillis();

list.parallelstream().foreach((s) -> );

long endtime1 = system.currenttimemillis();

system.out.println("lambda表示式用時:" + (endtime1 - starttime1));

}public void test2()

// for迴圈

long starttime = system.currenttimemillis();

for (object s : list) catch (interruptedexception e)

s.tostring();

}long endtime = system.currenttimemillis();

system.out.println("for迴圈耗時:" + (endtime - starttime));

// lambda表示式

long starttime1 = system.currenttimemillis();

list.parallelstream().foreach((s) -> catch (interruptedexception e)

s.tostring();

});long endtime1 = system.currenttimemillis();

system.out.println("lambda耗時:" + (endtime1 - starttime1));}}

多執行緒操作時的結果:

foreach比lamdba快,list.parallelstream()是併發處理的,大量的執行緒上下文切換導致效能下降。

單執行緒操作結果:

總結:對於耗時的操作用lambda表示式的for迴圈,如資料庫的io操作,多執行緒充分利用cpu資源;對於不太耗時的操作使用普通for迴圈,比如純cpu計算型別的操作,單執行緒效能更高,減少上下文切換的開銷。 

for與foreach的區別

for i 0 iecho arr i for只能訪問鍵為數字的陣列 foreach arr as k v k 迴圈的鍵值 v 迴圈的值 foreach迴圈結構是按照陣列內部的指標去迴圈的,當 foreach 開始執行時,陣列內部的指標會自動指向第乙個單元,因此下一次迴圈中將會得到下乙個單元 for...

for迴圈與foreach的區別

首先說一下foreach有的也叫增強for迴圈,foreach其實是for迴圈的乙個特殊簡化版。再說一下foreach的書寫格式 for 元素型別 元素名稱 遍歷陣列 集合 或者能進行迭代的 用for迴圈的話就會麻煩很多 複製 public static void main string args ...

for迴圈與foreach的區別

for迴圈與foreach的區別 foreach 依賴 ienumerable.第一次 var a in getlist 時 呼叫 getenumerator 返回第乙個物件 並 賦給a,以後每次再執行 var a in getlist 的時候 呼叫 movenext.直到迴圈結束.期間getlis...