0
哪個代碼是更有效時:刪除分支機構設置局部變量
程序進行
local int a[5];
bool condition;
...
a[0] = 0;
if (condition) {
a[0] = 1;
}
或常規乙
local int a[5];
bool condition;
....
a[0] = 0;
a[0] = select(a[0], 1, condition);
第二上市消除了分支,但SELECT語句可能如果條件爲假,則訪問本地內存兩次。希望如果條件是錯誤的,編譯器會放入一個空操作。
大部分(如果不是全部)編譯器都能夠用無分支條件移動替換第一個分支。請花時間檢查生成的程序集,然後再問這樣的問題...... – 2015-02-06 01:46:16