static关键字是否会提高性能?

时间:2012-05-29 21:42:12

标签: c++ performance

我理解这是一个微优化,但我感兴趣的是,与非static实现相比,声明函数或成员变量static是否提供了任何性能提升?

我记得读过const可以用于编译器优化,所以我想知道static是否有任何类似的优点。

3 个答案:

答案 0 :(得分:7)

考虑到static和非static变量具有不同的语义,无论您是否可以声明static与性能无关。

此外,缓存和其他问题可能意味着“不”。

答案 1 :(得分:1)

如果构造需要很长时间(例如预先计算的缓冲区或从磁盘读取的东西),它可以用于数据。通常,这只是在数据不可变时才是理想的。

答案 2 :(得分:0)

@DeadMG已经指出将成员变量更改为static会完全改变语义,这同样适用于静态函数。

一般来说,答案是否定的,static无助于性能(and neither does const),但static可以帮助的一种方式是在ELF共享库中,其中静态函数不是外部可见,所以调用它不需要通过procedure linkage table,这给了一个小的性能优势,在为共享库编写代码时值得考虑。