作者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