开发者社区> 问答> 正文

看了两篇关于优化程序的帖子,其中读到有关全局变量产生的疑惑

第一篇中提到

尽量少用全局变量,多用局部变量。
因为全局变量是放在数据存储器中,定义一个全局变量,MCU就少一个可以利用的数据存储器空间,如果定义了太多的全局变量,会导致编译器无足够的内存可以分配。而局部变量大多定位于MCU内部的寄存器中,在绝大多数MCU中,使用寄存器操作速度比数据存储器快,指令也更多更灵活,有利于生成质量更高的代码,而且局部变量所的占用的寄存器和数据存储器在不同的模块中可以重复利用。

第二篇中提到
减少函数调用参数
使用全局变量比函数传递参数更加有效率。这样做去除了函数调用参数入栈和函数完成后参数出栈所需要的时间。然而决定使用全局变量会影响程序的模块化和重入,故要慎重使用。

这其中是不是矛盾呢?

展开
收起
a123456678 2016-06-08 20:02:17 2307 0
2 条回答
写回答
取消 提交回答
  • 一个程序员,欢迎骚扰!!!

    其实 就是中和一下 不是说用全局变量 一定不好 分场合吧

    2019-07-17 19:32:38
    赞同 展开评论 打赏
  • 你这个是说下面两种方法在局部变量的分配上是相同的?

        for(int i=0; i<n; ++i)
            int localvar = 0;
    n次循环,局部变量localvar重新分配、释放了n次
    
    void func(int localvar){}
    int main(){
        for(int i=0; i<n; ++i) 
               func(j);
    }

    函数执行了n次,对于函数参数有n次压栈、出栈操作。

    2019-07-17 19:32:38
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Android插件化-从入门到"放弃" 立即下载
Storm源码走读笔记 立即下载
Python第五讲——关于爬虫如何做js逆向的思路 立即下载