溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么理解多核查找

發(fā)布時(shí)間:2021-11-17 16:15:41 來源:億速云 閱讀:126 作者:iii 欄目:web開發(fā)

本篇內(nèi)容主要講解“怎么理解多核查找”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“怎么理解多核查找”吧!

在CDHashArray中,對(duì)數(shù)組的插入和刪除都是順序化的操作,查找也是近似于順序化的操作,看起來似乎會(huì)很慢。實(shí)際上對(duì)于小數(shù)組,比如只有幾個(gè)或十來個(gè)數(shù)組,其效率并不慢,這使得以前在單核時(shí)代無法用于大型查找的數(shù)組順序查找,在多核時(shí)代卻可以得到很好應(yīng)用前景。

二級(jí)查找結(jié)構(gòu)基本思想

要了解多級(jí)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì),首先得知道基本的二級(jí)查找數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)思想。

二級(jí)查找結(jié)構(gòu)就是在第1級(jí)查找時(shí)找到二級(jí)子表的位置,然后在找到的二級(jí)子表中進(jìn)行第二次查找來找到對(duì)應(yīng)的目標(biāo)數(shù)據(jù)。

典型的二級(jí)查找結(jié)構(gòu)示意圖如下:

怎么理解多核查找

圖 16.2.1: 二級(jí)查找結(jié)構(gòu)示意圖

二級(jí)查找結(jié)構(gòu)由一級(jí)查找表和二級(jí)子表構(gòu)成,一個(gè)查找表中的每個(gè)節(jié)點(diǎn)指向一個(gè)二級(jí)查找子表。查找時(shí),先將關(guān)鍵詞映射成一級(jí)查找表的位置,然后將對(duì)應(yīng)位置的二級(jí)子表取出,在子表中找到對(duì)應(yīng)的查找目標(biāo)數(shù)據(jù)。

Intel Threading Building Blocks(TBB)開源項(xiàng)目中,其中的concurrent_hash_map使用的就是一種最簡單的二級(jí)查找結(jié)構(gòu)。它使用了哈希表式的數(shù)據(jù)結(jié)構(gòu),并給哈希表的每個(gè)桶設(shè)一把鎖。

對(duì)于普通的查找,這種簡單的二級(jí)查找結(jié)構(gòu)也許夠用了,但是對(duì)于一些大型的查找,這種簡單的二級(jí)查找結(jié)構(gòu)并不能滿足。首先的問題是如果子表數(shù)量過多,則鎖的數(shù)量也非常多,鎖本身需要占用大量的內(nèi)存開銷。

如 果子表數(shù)量過少,那么又會(huì)引起另外一個(gè)重要的問題,那就是負(fù)載平衡問題。因?yàn)檫@種情況中有可能各個(gè)二級(jí)子表中的數(shù)據(jù)數(shù)量相差非常大,這將導(dǎo)致某些子表的訪 問量很少,而某些子表的訪問量很大。這些訪問量大的表很容易發(fā)生多個(gè)線程同時(shí)訪問的情況,從而導(dǎo)致集中式鎖競爭情況的發(fā)生。

為了解決二級(jí)查找結(jié)構(gòu)中的不足,下面來看看多級(jí)查找結(jié)構(gòu)的設(shè)計(jì)思想。

多級(jí)查找結(jié)構(gòu)設(shè)計(jì)思想

多級(jí)查找結(jié)構(gòu)是在二級(jí)查找結(jié)構(gòu)的基礎(chǔ)上設(shè)計(jì)的,當(dāng)某個(gè)子表中數(shù)據(jù)個(gè)數(shù)過多時(shí),可以將其拆分成兩個(gè)或更多個(gè)子表,同時(shí)新建一個(gè)索引表來指向這幾個(gè)拆分候的子表,指向原來子表的指針指向新建的索引表。

如果拆分后的子表內(nèi)插入的數(shù)據(jù)過多時(shí),可以繼續(xù)將其分拆,這樣一直分拆下去,將形成一個(gè)多級(jí)的查找數(shù)據(jù)結(jié)構(gòu)。

到此,相信大家對(duì)“怎么理解多核查找”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI