最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

只會(huì)寫 if 的菜炸了,手動(dòng)分支消除,帶你裝〇帶你飛!

2023-05-11 21:58 作者:breakerzh  | 我要投稿

分支控制流在處理器指令執(zhí)行中的開銷與效率影響:

1. branch predictor 分支預(yù)測失敗造成的開銷 miss penalty 不中處罰,pipeline stall 流水線堵塞。

2. 對 SIMD 指令級(jí)并行不友好,SIMD 寄存器中各分量,無法即執(zhí)行條件指令又同時(shí)運(yùn)算。

----------

分支消除的推導(dǎo)步驟

?
20200315-194427885 P1 - 06:25
?

1. 先將 if-else 改為三元條件運(yùn)算符表達(dá)式。

2. 將 c ? x : y 轉(zhuǎn)換為等價(jià)形式 y - (c ? (y - x) : 0),假定沒有算術(shù)溢出。

?
20200315-194427885 P1 - 07:54
?

3. [關(guān)鍵點(diǎn)] 重新考慮 bool 系統(tǒng),0 仍作為 false,但將 -1 (0xff...f) 作為 true。三元條件表達(dá)式轉(zhuǎn)換為 y - (c2 & (y - x))

這里的關(guān)鍵思想是用真值的位特性,及位運(yùn)算(這里是按位與),來替代條件判斷。

?
20200315-194427885 P1 - 08:53
?

4. [關(guān)鍵點(diǎn)] 構(gòu)造新的 bool 條件變量 c2。原 bool 條件變量 c 是由關(guān)系運(yùn)算 > < == != 求值出來的,真值只能是 false=0, true=1,現(xiàn)在要構(gòu)造 true 時(shí) c2 真值為 -1。對于這個(gè)例子,v < 10 時(shí),要讓 c2=-1,v >= 10 時(shí),要讓 c2=0。

構(gòu)造方法 1. 直接給原條件表達(dá)式前加負(fù)號(hào) c2=-(v < 10)

構(gòu)造方法 2. 這個(gè)更高效,沒有關(guān)系運(yùn)算,也就是沒有比較指令,而是做減法差值,然后通過移位時(shí)保留符號(hào)位來產(chǎn)生 -1 (0xff...f)。作者寫的是 c2=(v - 10) >> 15,為什么是右移 15 位,而不是 31 位,因?yàn)檫@個(gè)例子中 v - 10 是 ASCII 碼差值(距離),最大的差值是 -127 和 127,有效值在低 15 位里(實(shí)際上是在低 8 位里),只要把它們向右移出即可。

----------

?
20200315-200153559 P2 - 01:15
?


只會(huì)寫 if 的菜炸了,手動(dòng)分支消除,帶你裝〇帶你飛!的評(píng)論 (共 條)

分享到微博請遵守國家法律
泾源县| 教育| 曲靖市| 广丰县| 濉溪县| 蓬安县| 巫溪县| 久治县| 香河县| 共和县| SHOW| 合江县| 延川县| 景宁| 正定县| 沙河市| 九龙县| 铜梁县| 云安县| SHOW| 武川县| 独山县| 毕节市| 元阳县| 清新县| 石门县| 闽清县| 卓资县| 昌图县| 泸西县| 黔西县| 长宁县| 遂宁市| 南昌县| 仁化县| 敦化市| 甘谷县| 九寨沟县| 罗江县| 龙游县| 高雄市|