作者progden (习惯成自然)
站内Prob_Solve
标题Re: [问题] 面试遇到的程式问题,现在还想不出来(MTK)
时间Sun Mar 30 21:35:22 2008
※ 引述《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
1F:推 final01:回圈展开好像真的比较快~但好像没人会这样写耶 03/31 02:05
2F:推 yoco315:会有人这样写阿,而且好的 compiler 还会自动作这件事情 03/31 23:55
3F:推 H45:Compiling it by gcj with optimization, it'll be the same. 04/01 04:54
4F:推 frank99977:把程式做平行计算会比较快吗? 04/04 18:26