論 IntStream 和 for 迴圈的速度

2022-09-08 15:36:10 字數 1209 閱讀 1335

用 intstream 和 for 迴圈來實現計算 [0, 10000] 之間偶數和。

import j**a.util.stream.intstream;

public

class

testfour

}/* code running results

* 25005000

* 25005000

*/

執行出來結果都是 25005000

我們先看for-迴圈

for

(int i =

0;i <=

10000

;i++)if

(i %2==

0)count1 += i;

for-迴圈需要三行**實現,在 for 迴圈裡面使用 if 判斷語句來篩選偶數再累加到一塊。

再看intstream

long count2 = intstream.

rangeclosed(0

,10000).

filter

(a -

> a %2==

0).sum()

;

import j**a.util.stream.intstream;

public

class

testfour

}/* code running results

* 25005000 1毫秒

* 25005000 158毫秒

*/

很明顯intstream 比 for 迴圈慢了多得多

當然每次執行結果都不同,不同裝置跑出來結果都不相同,但不管怎麼測試 intstream 都是比 for-迴圈快多的多。

至於什麼原因呢?測試的效能主要取決於記憶體訪問與遍歷。其中記憶體訪問這個還受限制於硬體本身,所以不同的平台上會有不同的結果。

使用流會在主框架內進行呼叫,不可避免地增加記憶體呼叫。而乙個it編譯器本身是有乙個上限的,雖然大部分情況下是用不滿的。因此,我們將這種情況分為it友好與不友好,而 for- 迴圈本身是處於it友好的這-邊,因此它自然能夠贏得這個測試,並沒有神馬奇怪。當然還有其他很多原因。

Python學習筆記 for和while迴圈語句

根據廖雪峰官方 python教程整理 一 for 迴圈要計算1 2 3 我們可以直接寫表示式 1 2 3 6 要計算1 2 3 10 勉強也能寫出來。但是,要計算1 2 3 10000 直接寫表示式就不可能了。為了讓計算機能計算成千上萬次的重複運算,我們就需要迴圈語句。python的迴圈有兩種,一種...

python基礎for迴圈和while迴圈(十)

while 迴圈 a 10 while a 0 print a print 結束 for迴圈 a 12345 for item in a print item b 1,2,3,4 for item in b print item c a b c d for item in c print item ...

lua for循壞和迭代器

普通for迴圈 for var exp1,exp2,exp3 do 執行體 endvar 從 exp1 變化到 exp2,每次變化以 exp3 為步長遞增 var,並執行一次 執行體 exp3 是可選的,如果不指定,預設為1。函式for迴圈 function f x print function r...