全局变量和局部变量的性能问题
测试程序:该测试程序分别调用相同的函数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]$
从运行结果可以看出,全局变量的调用效率低于局部变量。
实在想不出原因,望高人指点
环境: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]$
从运行结果可以看出,全局变量的调用效率低于局部变量。
实在想不出原因,望高人指点
...全文
相关推荐
交互原型设计:全局变量和局部变量的使用.pptx
全局变量和局部变量的使用;全局变量和局部变量的使用;单击“项目菜单”的“全局变量”选项,在打开的“全局变量”的对话框里可以新增和编辑全局变量。 默认有一个全局变量“OnLoadVariable”,我们单击绿色加号新增一个全局变量总数量“count”,变量值可以默认为空,也可以赋值,让count等于0。;;在弹出的“编辑文字”对话框中,单击“新增局部变量”即可新增一个局部变量,可以对局部变量重新命名和赋值,这个局部变量只在给文本赋值的时候有作用,其他的交互动作是访问不到这个局部变量的。;感谢您的观看
Android中的全局变量与局部变量使用小结
主要介绍了Android中的全局变量与局部变量使用小结,全局变量顾名思义就是在整个的类中或者可在多个函数中调用的变量,也称为外部变量,局部变量则是特定过程或函数中可以访问的变量,需要的朋友可以参考下
局部变量 全局变量 堆栈总结
堆栈(stack)是内存中的一个连续的块。一个叫堆栈指针的寄存器(SP)指向堆栈的栈顶。堆栈的底部是一个固定地址。堆栈有一个特点就是,后进先出。也就是说,后放入的数据第一个取出
c语言-全局变量和局部变量.cpp
c语言-全局变量和局部变量.cpp
C语言全局/局部变量
这个工程里面的描述很简单。就是陈列了一个全局变量和一个局部变量。适合人群:刚开始C语言单片机编程的开发人员。对函数之间数据交互不太清楚的人。



