用 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...