国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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)論 (共 條)

分享到微博請遵守國家法律
吉隆县| 翁牛特旗| 邯郸市| 绥阳县| 综艺| 清原| 边坝县| 姚安县| 中江县| 冀州市| 安新县| 南郑县| 揭东县| 商水县| 清丰县| 东乌珠穆沁旗| 乌鲁木齐县| 新源县| 府谷县| 盐亭县| 蒙城县| 宣化县| 江都市| 伊宁县| 隆尧县| 灵川县| 汾西县| 资中县| 卢湾区| 务川| 芦溪县| 石河子市| 郧西县| 吐鲁番市| 徐水县| 太康县| 南阳市| 和田县| 肇州县| 沅陵县| 沿河|