2012-05-29 20 views
1

我明白這是一個微型優化,但我對是否將函數或成員變量聲明爲static提供了與非static實現相比的性能提升感興趣?靜態關鍵字是否會提高性能?

我記得讀const可以用於編譯器優化,所以它讓我想知道static是否有任何類似的優勢。

+0

C++中沒有靜態類 –

+0

永遠不會意識到!但編輯反映... – user997112

+0

真正的問題是:_你爲什麼care_? –

回答

1

如果構造需要很長時間(例如,預先計算的緩衝區或從磁盤讀取的東西),它可能用於數據。通常,當數據不可變時,這只是理想的。

7

考慮到static和非static變量具有極其不同的語義,你是否能申報static真的有無關的性能。

此外,緩存和其他問題可能意味着「不」。

+1

用於'語義'的+1 –

0

@DeadMG已經指出,將一個成員變量改爲靜態會徹底改變語義,這同樣適用於靜態函數。

一般的答案是否定的,static沒有幫助的性能(and neither does const),但一個方式static可以幫助是一個ELF共享庫,其中一個靜態函數是外部不可見,因此呼籲給它穿上」 t需要經過procedure linkage table,這爲編寫共享庫代碼時提供了一個值得考慮的小性能好處。