我今天用程序摸拟了一个,程序大体如下:
struct str
{
int a1;
int a2;
int a3;
}
include "time.h"
main()
{
struct str xx;
xx.a1=19;
xx.a2=23;
xx.a3=34;// 此数随便取就是
long start1,start2,end1,end2;
for(long n=1000;n<1000000000;n=n*10)
{
start1=clock();
for(long i=0;i<=n;i++)
function1(xx);
end1=start2=clock();
for(i=0;i<=n;i++)
function2(xx);
end2=clock();
cout<<"\n if n="<<n<<endl;
cout<<"Function1 use time is "<<(end1-start1)/CLK_TCK<<endl;
cout<<"Function2 use time is "<<(end2-start2)/CLK_TCK<<endl;
}
}
void function1(struct str x)
{
int temp1;
temp1=x.a1;
x.a1=x.a2;
x.a2=x.a3;
x.a3=temp1
}
void function1(struct str &x)
{
int temp1;
temp1=x.a1;
x.a1=x.a2;
x.a2=x.a3;
x.a3=temp1
}
得到的结果如下:
n=100000
function1 use time 0.0549455
function2 use time 0
n=1000000
function1 use time 0.384615
function2 use time 0.10989
n=10000000
function1 use time 3.351648
function2 use time 0.989011
n=100000000
function1 use time 33.2967
function2 use time 9.835165
n=1000000000
function1 use time 330.384615
function2 use time 94.835165
从结果一看便知传地址快一些特别是数据量大时!
我用的是 TC++3。0 CPU是K6-2 350,主频是350M