是否有可能通过声明一个变量在C获得性能++ static
,const
或使其global
?
除非将内置变量的局部变量放在其他地方,否则您不太可能胜过内置类型的函数局部变量:如果可以在编译时计算变量的值,则使其constexpr
成为理想选择。
static
确定该对象是否已初始化的函数的每次调用中,使用该变量可能会产生少量开销,尤其是对于C ++ 11而言,该初始化是线程安全的。即使不需要检查,堆栈也可能位于高速缓存的内存中,而static
变量则不需要。const
如果编译器可以将值计算为编译时间,则创建变量可能会有所帮助。如果变量具有非平凡类型,那么事情会变得更加有趣,因为例如a的初始化成本std::vector<T>
是非平凡的。static
与全局对象相比,我不希望使对象在局部功能上有所区别(即,我不会将它们全局化;总之没有空间容纳全局对象)。但是,制作对象static
可能会导致线程之间共享对象。如果这是一个问题,那么增加的锁定和序列化可能会抵消任何潜在的节省,并且使用基于堆栈的内存使用分配器是降低成本的更好方法(假设它们足够小,可以合理地在堆栈上使用)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句