看板 Prob_Solve 關於我們 聯絡資訊
搞個 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
PsMonkey:Java 要怎麼辦? XD 12/30 23:25
gwliao:http://0rz.tw/863vr 請服用. (  ̄ c ̄)y▂ξ 12/30 23:29
asleepme:請問一下那些時間是怎麼計算的QQ 01/06 02:00
GiNdeR:這些code算出來的結果一樣嗎? 01/22 09:00