作者gwliao (gwliao)
看板Prob_Solve
標題Re: [問題] 面試遇到的程式問題,現在還想不出來(MTK)
時間Sun Dec 30 22:31:54 2007
搞個 Loop unrolling.
int main(void) {
long int s,i;
s=0;
for(i=0;i<=1000000000;i++)
s=s+i;
}
g++ test.c
real 0m2.058s
user 0m2.030s
gcc test.c
real 0m2.010s
user 0m2.000s
gcc -O3 test.c 或 g++ -O3 test.c
real 0m0.001s
user 0m0.000s
之後, 不用-O, 用"gcc test.c"
for(i1=0,i2=0;i1<=(1000000000)/2;i1=i1+2,i2=i2+2)
s=s+i1+i2;
real 0m0.647s
user 0m0.640s
for(i1=0,i2=0,i3=0,i4=0;i1<=(1000000000)/4;
i1=i1+4,i2=i2+4,i3=i3+4,i4=i4+4)
s=s+i1+i2+i3+i4;
real 0m0.247s
user 0m0.240s
我加到i8
real 0m0.105s
user 0m0.100s
加到i16
real 0m0.032s
user 0m0.040s
囧rz 我累了, 請提供其他的方法吧.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.233.31
1F:推 PsMonkey:Java 要怎麼辦? XD 12/30 23:25
3F:推 asleepme:請問一下那些時間是怎麼計算的QQ 01/06 02:00
4F:→ GiNdeR:這些code算出來的結果一樣嗎? 01/22 09:00