全局变量和局部变量的性能问题
P_T_P 2010-07-16 11:28:57 测试程序:该测试程序分别调用相同的函数1000000次,但两种调用不同的是前一种传入局部变量,后一种传入全局变量。分别统计了两种调用的时间消耗,精确到微妙。
环境:redhat 2.6.18-53.el5
[dhcp2@dhcp_host lcm]$ vi t8.cpp
1 #include <stdio.h>
2 #include <sys/time.h>
3 int j;
4 void f(int i)
5 {}
6 int main()
7 {
8 int i;
9 struct timeval tv1,tv2;
10 gettimeofday(&tv1,NULL);
11 for(i=0;i<10000000;i++)
12 {
13 f(i);
14 }
15 gettimeofday(&tv2,NULL);
16 printf("usec=%u\n",(tv2.tv_sec-tv1.tv_sec)*1000000+(tv2.tv_usec-tv1.tv_usec));
17 gettimeofday(&tv1,NULL);
18 for(j=0;j<10000000;j++)
19 {
20 f(j);
21 }
22 gettimeofday(&tv2,NULL);
23 printf("usec=%u\n",(tv2.tv_sec-tv1.tv_sec)*1000000+(tv2.tv_usec-tv1.tv_usec));
24 return 0;
25 }
"t8.cpp" 27L, 505C 已写入
[dhcp2@dhcp_host lcm]$ g++ t8.cpp
[dhcp2@dhcp_host lcm]$ ./a.out
usec=46303
usec=52991
[dhcp2@dhcp_host lcm]$ ./a.out
usec=46418
usec=52901
[dhcp2@dhcp_host lcm]$ ./a.out
usec=46384
usec=52942
[dhcp2@dhcp_host lcm]$
从运行结果可以看出,全局变量的调用效率低于局部变量。
实在想不出原因,望高人指点