Re: [問題] 面試遇到的程式問題,現在還想不出來(MTK)

看板Prob_Solve (計算數學 Problem Solving)作者 (習慣成自然)時間16年前 (2008/03/30 21:35), 編輯推噓4(400)
留言4則, 4人參與, 最新討論串10/16 (看更多)
※ 引述《previewslave (蝦蝦蝦蝦 來玩圍棋吧)》之銘言: : ※ 引述《previewslave (蝦蝦蝦蝦 來玩圍棋吧)》之銘言: : : for (i=100; i--;) s+= i; : 修正: : for (i=101; i--;) s += i; 把迴圈展開 速度真的會變快說 int sum = 0 ; int N = 1000000000 ; long start,end ; start = System.currentTimeMillis(); for(int i = 0 ; i < N ;){ sum += (i++) ; } end = System.currentTimeMillis(); System.out.println("test1 : (end-start) = "+(end-start)); start = System.currentTimeMillis(); for(int i = 0 ; i < N ;){ sum += (i++) ; sum += (i++) ; sum += (i++) ; sum += (i++) ; sum += (i++) ; sum += (i++) ; sum += (i++) ; sum += (i++) ; sum += (i++) ; sum += (i++) ; } end = System.currentTimeMillis(); System.out.println("test2 : (end-start) = "+(end-start)); 先不管sum會溢位的問題的話 輸出結果是 test1 (end-start) = 2000 test2 (end-start) = 1531 誤差大概到 +- 20 左右 使用的compiler是 java (build 1.6.0_05-b13) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.128.18.137

03/31 02:05, , 1F
迴圈展開好像真的比較快~但好像沒人會這樣寫耶
03/31 02:05, 1F

03/31 23:55, , 2F
會有人這樣寫阿,而且好的 compiler 還會自動作這件事情
03/31 23:55, 2F

04/01 04:54, , 3F
Compiling it by gcj with optimization, it'll be the same.
04/01 04:54, 3F

04/04 18:26, , 4F
把程式做平行計算會比較快嗎?
04/04 18:26, 4F
文章代碼(AID): #17xvSRAO (Prob_Solve)
討論串 (同標題文章)
文章代碼(AID): #17xvSRAO (Prob_Solve)