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

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

無符號(hào)整型除法的快速算法

2020-05-31 18:13 作者:九條可憐醬  | 我要投稿

眾所周知,即使是現(xiàn)在最新的CPU整數(shù)除法指令依然是相當(dāng)慢的,在某些情況下耗時(shí)和幾十次位運(yùn)算差不多。而整數(shù)乘法指令則相當(dāng)快,耗時(shí)和兩三次位運(yùn)算相當(dāng)。

各種主流編譯器很早就明白了這個(gè)道理,它們會(huì)對(duì)除數(shù)為常量的整數(shù)除法進(jìn)行優(yōu)化,優(yōu)化成整數(shù)乘法和移位運(yùn)算。

下面我們來看一些編譯器優(yōu)化的例子。

GCC?-O2
C# JIT ASM

可以看到編譯器把x/5優(yōu)化成了(unsigned int)((x*3435973837ULL)>>34)。那么問題來了,編譯器都干了些什么,乘以3435973837和右移34是怎么算出來的?


下面我只說這2個(gè)數(shù)怎么算出來的,具體數(shù)學(xué)原理可以在文章末尾的鏈接參考某大佬的文章。

在32位無符號(hào)整型范圍內(nèi),將x/y變成(x*a)>>b等價(jià)形式,那么:

當(dāng)然,這么直接有缺點(diǎn)的,超出32位范圍了,如何繼續(xù)優(yōu)化參考大佬文章吧!



參考:http://ridiculousfish.com/blog/posts/labor-of-division-episode-i.html


無符號(hào)整型除法的快速算法的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
尼木县| 修文县| 垣曲县| 宁陕县| 富宁县| 连平县| 吉林省| 宽城| 克东县| 信宜市| 河西区| 丹寨县| 阜平县| 钦州市| 泰来县| 梁山县| 津南区| 南川市| 宝清县| 西平县| 吉林省| 三门县| 治多县| 临沂市| 尚义县| 紫金县| 北碚区| 涿州市| 济宁市| 海晏县| 无为县| 惠来县| 玛纳斯县| 博兴县| 林芝县| 乌审旗| 长垣县| 富平县| 武宣县| 合水县| 外汇|