您的位置:首页 > 编程语言 > C语言/C++

c++反汇编学习笔记-------------篇外1、if和switch效率的实测

2015-09-20 11:55 267 查看
学完 c++反汇编学习笔记———-3.流程控制这篇之后就做了if-else和switch的效率测试,实际检验了一下这两种多分支方式在debug模式下代码的效率:

因为代码过长,给出测试的部分代码如下

#define IF(x,y)   if(x==y)fprintf(in,"%d",y)
#define ELIF(x,y) else if(x==y)fprintf(in,"%d",y)

int testif()
{
FILE*in=fopen("in.txt","w");
int s=0;
for(int cas=0;cas<1000000;cas++)
{
int t=rand()%10000;
int a=clock();
IF(t,1);
ELIF(t,2);
ELIF(t,3);
ELIF(t,4);
/*
共10000条ELIF,省略
*/
s+=clock()-a;
}
printf("%d\n",s);
return s;
}

#define CASE(x)   case x:fprintf(in,"%d",x);break
int testswhitch()
{
FILE*in=fopen("in.txt","w");
int s=0;
for(int cas=0;cas<1000000;cas++)
{
int t=rand()%10000;
int a=clock();
switch(t)
{
CASE(0);
CASE(1);
/*
共10000条CASE,省略
*/
}

s+=clock()-a;
}
printf("%d\n",s);
return s;
}
int main()
{
testif();
testswhitch();
testif();
testswhitch();
testif();
testswhitch();
testif();
testswhitch();
testif();
testswhitch();
}




可以明显看出 switch的效率高了很多!验证了所学知识
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言