目录
省流:自加语句总体来说分为两种:i++与++i,后者效率约比前者高千分之一(笔者测试)。
原因分析
两者效率差的原因为:i++会产生随机变量。具体详细分析可参考:一看就懂的i++和++i详解_song854601134的博客-CSDN博客
程序实测
上次有个朋友跟我说++i比i++的效率高,今天就写了程序测试一下。代码如下
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main()
{
int i,x,j;
clock_t finish,start,sum=0;
for(x=0;x<=10000;x++){
j=0;
start=clock();
for(i=0;i<10000000;++i){
++j;
}
finish=clock();
sum=sum+finish-start;//sum加上++i型时间
j=0;
start=clock();
for(i=0;i<10000000;i++){
j++;
}
finish=clock();
sum=sum-(finish-start);//sum减去i++型时间
if(x%100==0){//显示运行进度
system("cls");
printf("运行进度:%d%%",x/100);
}
}
printf("\n%lf\n",(double)(sum));//展示最终结果
return 0;
}
该程序进行了千万级次自加运算来减小误差(程序运行时间有着众多因素影响),笔者测试了四次(因为运行太久还加上了进度条程序),代表性的结果如下:
由上可知两者大致的效率差距约为千分之一。