JAVA新手初級最常做的for迴圈練習,就是計算從h到t的數字總合。
這個練習為何很重要?
........
或者該問:這個練習重要嗎?
其實這個練習的意義在瞭解for迴圈的結構跟意義,還有程式計算中「賦予參數一個數值」這個動作真正的意義。
不然真的要計算從h到t的數字總合,大家可以直接用公式就好:
好笑的問題是...
寫程式寫了不算短的時間,我還真沒在實際職場應用上計算過從h到t的數字總合 。
凡是要使用迴圈,一定都是為了讀取一個矩陣中的各個元素。
所以我不禁納悶:現實中使用for迴圈和用公式來計算從h到t的數字總合這個問題,在效能上的差距會有多少?
就我對計算機原理淺薄的理解上來說,X*N對電腦來說不過就是把「加X」這個動作做N次,X往往只是t和h的平均值,N則是之間的差。
這不也是迴圈在做的事情嗎?既然如此,效能可以差距到多少呢?
(為何會有circle這個數值?因為如果直接加總h到t,其實數字要非常大才能比較出效能差距,但如果加入circle這層迴圈,就可以放大那一點點小小的效能差距。)
我做了從0到10000的數字加總,與從100到10100的數字加總,一共兩總比較。
結果很遺憾的,用公式計算可以說大獲全勝。
(如果把circle改為30000,甚至300000,可以更明顯得看出來用公式與用迴圈的不同。)
其實用公式會快是理所當然的,畢竟For迴圈其實包含了判斷式、區域變數宣告、區域變數遞增計算,不需要處理這些,直接進行計算的公式當然快。
這堆程式只是想具體知道「到底差了多少?」
文章寫到這裡時,我又把circle調整為3300000,然後t調整為20000。(不付上程式了。)
用迴圈必須要跑上48秒的計算,用公式只要35毫秒就完成了。
可是計算從100到20100的加總時,迴圈要45秒,用公式卻跑了38毫秒。
所以我一口氣再把circle調整為9900000,t調整為40000,結果(公式)是109和115毫秒。(都是增加了一成左右的時間。)
請不要問我這一切有何意義。我只是想驗證看看而已。
這個練習為何很重要?
........
或者該問:這個練習重要嗎?
其實這個練習的意義在瞭解for迴圈的結構跟意義,還有程式計算中「賦予參數一個數值」這個動作真正的意義。
不然真的要計算從h到t的數字總合,大家可以直接用公式就好:
好笑的問題是...
寫程式寫了不算短的時間,我還真沒在實際職場應用上計算過從h到t的數字總合 。
凡是要使用迴圈,一定都是為了讀取一個矩陣中的各個元素。
所以我不禁納悶:現實中使用for迴圈和用公式來計算從h到t的數字總合這個問題,在效能上的差距會有多少?
就我對計算機原理淺薄的理解上來說,X*N對電腦來說不過就是把「加X」這個動作做N次,X往往只是t和h的平均值,N則是之間的差。
這不也是迴圈在做的事情嗎?既然如此,效能可以差距到多少呢?
(為何會有circle這個數值?因為如果直接加總h到t,其實數字要非常大才能比較出效能差距,但如果加入circle這層迴圈,就可以放大那一點點小小的效能差距。)
我做了從0到10000的數字加總,與從100到10100的數字加總,一共兩總比較。
結果很遺憾的,用公式計算可以說大獲全勝。
(如果把circle改為30000,甚至300000,可以更明顯得看出來用公式與用迴圈的不同。)
其實用公式會快是理所當然的,畢竟For迴圈其實包含了判斷式、區域變數宣告、區域變數遞增計算,不需要處理這些,直接進行計算的公式當然快。
這堆程式只是想具體知道「到底差了多少?」
文章寫到這裡時,我又把circle調整為3300000,然後t調整為20000。(不付上程式了。)
用迴圈必須要跑上48秒的計算,用公式只要35毫秒就完成了。
可是計算從100到20100的加總時,迴圈要45秒,用公式卻跑了38毫秒。
所以我一口氣再把circle調整為9900000,t調整為40000,結果(公式)是109和115毫秒。(都是增加了一成左右的時間。)
請不要問我這一切有何意義。我只是想驗證看看而已。
沒有留言:
張貼留言