2011-11-28 31 views
0

我很好奇,如果這些影響編譯速度:使用this->,::和排序成員是否會提高編譯速度?

int y; 
struct foo { 
    void bar() { 
    x = y; 
    } 
    int x; 
}; 

想必更快的版本:

int y; 
struct foo { 
    int x; 
    void bar() { 
    this->x = ::y; 
    } 
}; 

請問第二編譯更快?如果是這樣,多少?

(如果它的事項我用GCC)

+5

是的,約七。 :-)但是,真的,有什麼阻止你自己來測量它嗎? (我想你需要多次重複每一個構造,才能產生差異 - 如果有的話) - – NPE

+4

這就是更多的角色閱讀 - 也許它運行速度更慢? –

+0

如果有任何速度差異,如果可以注意到它,我會懷疑編譯器被破壞。 –

回答

0

不,這不會影響編譯速度。

使用無論你發現哪一個最有用的表達你正在嘗試做什麼。你不應該在這裏考慮編譯速度,並且絕對不會以編譯速度的名義讓你的代碼變得醜陋。

1

這聽起來像你真正關心的是編寫大型程序的最佳實踐,這些程序編譯速度可能會很慢,而不僅僅是縮短編譯這樣一個小程序所用的毫秒數。

重要的是讓你的程序儘可能清晰,避免讓任何人閱讀它(首先,你自己)。毫秒的編譯時間不會像混淆時間一樣快。

一般來說,帶有編譯時數據結構和淫穢大文件的元編程(模板和宏)是編譯器速度變慢的原因,而不是在這裏和那裏的兩個作用域中檢查名稱。並且請記住,您需要解析更多的令牌以避免使用更簡單的合格查找。所以這兩種做法都不可能有一致的結果,更不重要。