亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

seo常用優(yōu)化技巧 網(wǎng)站代碼優(yōu)化工具( 三 )


哪怕你不增加預(yù)取代碼,硬件預(yù)取器也有可能幫你做預(yù)取,另外gcc也有編譯選項(xiàng),開(kāi)啟它會(huì)在編譯階段自動(dòng)插入預(yù)取代碼,手動(dòng)增加預(yù)取代碼需要小心處理,時(shí)機(jī)的選擇很重要,最后一定要基于測(cè)試數(shù)據(jù),另外,即使預(yù)取表現(xiàn)很好,但代碼修改也有可能導(dǎo)致效果衰減,而且預(yù)取語(yǔ)句執(zhí)行本身也有開(kāi)銷(xiāo),只有預(yù)取的收益大于預(yù)取的開(kāi)銷(xiāo),且CACHE-MISS很高才是值得的 。
## 2、算法優(yōu)化
數(shù)據(jù)量小的集合上遍歷查找即可,但如果循環(huán)的次數(shù)過(guò)百,便需要考慮用更快的查找結(jié)構(gòu)和算法替換蠻力遍歷,哈希表,紅黑樹(shù),二分查找很常用 。
### 哈希(HASH)
哈希也叫散列,是把任意長(zhǎng)度的輸入通過(guò)散列算法變換成固定長(zhǎng)度的輸出,該輸出就是散列值,也叫摘要 。比如把一篇文章的內(nèi)容通過(guò)散列生成64位的摘要,該過(guò)程不可逆 。
這種轉(zhuǎn)換是一種壓縮映射,也就是,散列值的空間通常遠(yuǎn)小于輸入的空間,不同的輸入可能會(huì)散列成相同的輸出,所以不可能從散列值來(lái)確定唯一的輸入值,但如果輸出的位數(shù)足夠,散列成相同輸出的概率非常非常小 。
字符串的比較有時(shí)會(huì)成為消耗較大的操作,雖然strcmp或者memcpy的實(shí)現(xiàn)用到了很多加速和優(yōu)化技巧,但本質(zhì)上它還是逐個(gè)比較的方式 。
字符串比較的一個(gè)改進(jìn)方案就是哈希,比較哈希值(通常是一個(gè)int64的整數(shù))而非比較內(nèi)容能快很多,但需要為字符串提前計(jì)算好哈希值,且需要額外的空間保存哈希值,另外,在哈希值相等的時(shí)候,還需要比較字符串,但因?yàn)闆_突的概率極低,所以后續(xù)的字符串比較不會(huì)很多次 。
這樣不一定總是更高效,但它提供了另一個(gè)思路,你需要測(cè)試你的程序,再?zèng)Q定要不要這樣做 。
另一個(gè)哈希的用法是哈希表,哈希表的經(jīng)典實(shí)現(xiàn)是提前開(kāi)辟一些桶,通過(guò)哈希找到元素所在的桶(編號(hào)),如果沖突,再拉鏈解決沖突 。
為了減少?zèng)_突經(jīng)常需要開(kāi)辟更多的桶,但更多的桶需要更大的存儲(chǔ)空間,特別是元素?cái)?shù)量不確定的時(shí)候,桶的數(shù)量選擇變得兩難,隨著裝載的元素變多,沖突加劇,在擴(kuò)容的時(shí)候,將需要對(duì)已存在的元素重新哈希,這是很費(fèi)的點(diǎn) 。
哈希表的沖突極端情況下會(huì)退化成鏈表,當(dāng)初設(shè)想的快速查找變得不再可行,HashMap是普通哈希表的改進(jìn)版,結(jié)合哈希和二叉平衡搜索樹(shù) 。
另一個(gè)常用來(lái)做查找的結(jié)構(gòu)是紅黑樹(shù),它能確保最壞情況下,有l(wèi)ogN的時(shí)間復(fù)雜度,但紅黑樹(shù)的查找過(guò)程需要沿著鏈走,不同結(jié)點(diǎn)內(nèi)存通常不連續(xù),CACHE命中性經(jīng)常很差,紅黑樹(shù)的中序遍歷結(jié)果是有序的,這是哈希表不具備的,另外,紅黑樹(shù)不存在哈希表那般預(yù)估容量難的問(wèn)題 。
### 基于有序數(shù)組的二分查找
二分查找的時(shí)間復(fù)雜度也是logN,跟紅黑樹(shù)一致,但二分查找的空間局部性更好,不過(guò)二分查找有約束,它只能在有序數(shù)組上進(jìn)行,所以,如果你需要在固定的數(shù)據(jù)集合(比如配置數(shù)據(jù))做查找,二分查找是個(gè)不錯(cuò)的選擇 。
### 跳表(Skip List)
跳表增加了向前指針,是一種多層結(jié)構(gòu)的有序鏈表,插入一個(gè)值時(shí)有一定概率晉升到上層形成間接的索引 。
跳表是一個(gè)隨機(jī)化的數(shù)據(jù)結(jié)構(gòu),實(shí)質(zhì)就是一種可以進(jìn)行二分查找的有序鏈表 。跳表在原有的有序鏈表上面增加了多級(jí)索引,通過(guò)索引來(lái)實(shí)現(xiàn)快速查找 。跳表不僅能提高搜索性能,同時(shí)也可以提高插入和刪除操作的性能 。
跳表適合大量并發(fā)寫(xiě)的場(chǎng)景,可以認(rèn)為是隨機(jī)平衡的二叉搜索樹(shù),不存在紅黑樹(shù)的再平衡問(wèn)題 。Redis強(qiáng)大的ZSet底層數(shù)據(jù)結(jié)構(gòu)就是哈希加跳表 。


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問(wèn)題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專(zhuān)業(yè)人士給予相關(guān)指導(dǎo)!

「愛(ài)刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助: