#include<cstdio>
#include<ctime>
//double _Time=0.0F;
inline const double GetTime()
{
return double(clock())/CLOCKS_PER_SEC;
}
const int Limit=1600000000;
//const int Limit=1000000;
int main()
{
double last=0.0F;
int sum;
/*pre test*/
last=GetTime();
sum=0;
for(int i=0;i<=Limit;++i)
sum+=i;
// printf("%lf\n",GetTime()-last);
puts("Normal ++i\ncostTime:");
last=GetTime();
sum=0;
for(int i=0;i<Limit;++i)
sum+=i;
printf("%lf\n",GetTime()-last);
puts("Normal i++\ncostTime:");
last=GetTime();
sum=0;
for(int i=0;i<Limit;i++)
sum+=i;
printf("%lf\n",GetTime()-last);
puts("Register ++i\ncostTime:");
register int _sum;
last=GetTime();
_sum=0;
for(register int i=0;i<Limit;++i)
_sum+=i;
printf("%lf\n",GetTime()-last);
register int _sum1=0,_sum2=0,_sum3=0,_sum4=0;
puts("Register ++i ParallelComputing*4\ncostTime:");
last=GetTime();
for(register int i=0;i<Limit;i+=4)
{
_sum1+=i;
_sum2+=i+1;
_sum3+=i+2;
_sum4+=i+3;
}
_sum=_sum1+_sum2+_sum3+_sum4;
printf("%lf\n",GetTime()-last);
_sum1=0,_sum2=0,_sum3=0,_sum4=0;
register int _sum5=0,_sum6=0,_sum7=0,_sum8=0;
puts("Register ++i ParallelComputing*8\ncostTime:");
last=GetTime();
for(register int i=0;i<Limit;i+=8)
{
_sum1+=i;
_sum2+=i+1;
_sum3+=i+2;
_sum4+=i+3;
_sum5+=i+4;
_sum6+=i+5;
_sum7+=i+6;
_sum8+=i+7;
}
_sum=_sum1+_sum2+_sum3+_sum4+_sum5+_sum6+_sum7+_sum8;
printf("%lf\n",GetTime()-last);
_sum1=0,_sum2=0,_sum3=0,_sum4=0,_sum5=0,_sum6=0,_sum7=0,_sum8=0;
register int _sum9=0,_sum10=0,_sum11=0,_sum12=0,_sum13=0,_sum14=0,_sum15=0,_sum16=0;
puts("Register ++i ParallelComputing*16\ncostTime:");
last=GetTime();
for(register int i=0;i<Limit;i+=16)
{
_sum1+=i;
_sum2+=i+1;
_sum3+=i+2;
_sum4+=i+3;
_sum5+=i+4;
_sum6+=i+5;
_sum7+=i+6;
_sum8+=i+7;
_sum9+=i+8;
_sum10+=i+8;
_sum11+=i+10;
_sum12+=i+11;
_sum13+=i+12;
_sum14+=i+13;
_sum15+=i+14;
_sum16+=i+15;
}
_sum=_sum1+_sum2+_sum3+_sum4+_sum5+_sum6+_sum7+_sum8+_sum9+_sum10+_sum11+_sum12+_sum13+_sum14+_sum15+_sum16;
printf("%lf\n",GetTime()-last);
}