Pri*_*alj 7 c c++ embedded performance global-variables
首先,让我了解一下这样一个事实:我是一个尝试以正确的方式做事的新手,这意味着我时不时地纠正什么是正确的方式.
我正在修改包含函数的外设的驱动程序 - 让我们调用它Send()
.在函数中我有一个timestamp变量,因此函数循环一段指定的时间.
那么,我应该声明变量global(这种方式它始终在内存中并且每次函数运行时都没有时间丢失)或者我将变量local留在函数上下文中(并避免使用全局的错误设计模式)变量)?
请记住,每毫秒可以多次调用该函数.
在实现驱动程序时,尽量避免使用全局变量,因为:
它们是线程不安全的,您不知道用户应用程序的调度方案(实际上,即使没有线程,使用同一驱动程序的多个实例也是一个潜在问题)。
它会自动生成数据部分,作为链接到驱动程序的任何应用程序的可执行映像的一部分(这是应用程序程序员可能想要避免的事情)。
小智 5
对于本地变量和全局变量,执行速度不应该显着不同.唯一真正的区别在于变量的存在.局部变量在堆栈上分配,全局变量在不同的内存段中.确实,每次进入例程时都会分配局部变量,但分配内存是移动堆栈指针的单个指令.
在决定变量应该是全局变量还是本地变量时,有许多更重要的考虑因素.
归档时间: |
|
查看次数: |
881 次 |
最近记录: |