一个内联函数的效率问题
一个测评内联函数效率的源程序如下:
#include<iostream.h>
#include<time.h>
inline int comp1(int a, int b){return (a>b)?a:b;}
int comp2(int a, int b){return (a>b)?a:b;}
void main()
{
double t1,t2;
int m=0,n=0;
t1=(double)clock();
for(m=0;m<10000;m++)
for(n=0;n<10000;n++)
comp1(m,n);
t2=(double)clock();
cout<<"调用内联函数运行时间为:\t"<<(t2-t1)/CLK_TCK<<"s\n";
m=0;n=0;
t1=(double)clock();
for(m=0;m<10000;m++)
for(n=0;n<10000;n++)
comp2(m,n);
t2=(double)clock();
cout<<"调用外部函数运行时间为:\t"<<(t2-t1)/CLK_TCK<<"s\n";
m=0;n=0;
t1=(double)clock();
for(m=0;m<10000;m++)
for(n=0;n<10000;n++)
(m>n)?m:n;
t2=(double)clock();
cout<<"直接运行时间为:\t"<<(t2-t1)/CLK_TCK<<"s\n";
}
这是第一次运行的结果:
调用内联函数运行时间为: 5.27s
调用外部函数运行时间为: 6.15s
直接运行时间为: 2.91s
第二次:
调用内联函数运行时间为: 4.89s
调用外部函数运行时间为: 4.89s
直接运行时间为: 2.47s
第三次:
调用内联函数运行时间为: 4.89s
调用外部函数运行时间为: 4.78s
直接运行时间为: 2.47s
为什么一次比一次怪?运行环境vc6 dos_link模式。