自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

多核查找-順序查找也瘋狂

開發(fā) 前端
在去年的軟件開發(fā)2.0技術大會上,我講了一個支持動態(tài)負載均衡的多核查找設計方法。基本思想是采用數(shù)據(jù)結構分拆的方法,使用了多級的數(shù)據(jù)結構設計。下面先簡要介紹一下這種多級數(shù)據(jù)結構的設計思路,然后給出一個采用數(shù)組順序查找作為查找表實現(xiàn)的多級數(shù)據(jù)結構類CDHashArray。

在去年的軟件開發(fā)2.0技術大會上,我講了一個支持動態(tài)負載均衡的多核查找設計方法?;舅枷胧遣捎脭?shù)據(jù)結構分拆的方法,使用了多級的數(shù)據(jù)結構設計。下面先簡要介紹一下這種多級數(shù)據(jù)結構的設計思路,然后給出一個采用數(shù)組順序查找作為查找表實現(xiàn)的多級數(shù)據(jù)結構類CDHashArray。

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

二級查找結構基本思想

要了解多級數(shù)據(jù)結構設計,首先得知道基本的二級查找數(shù)據(jù)結構設計思想。

二級查找結構就是在第1級查找時找到二級子表的位置,然后在找到的二級子表中進行第二次查找來找到對應的目標數(shù)據(jù)。

典型的二級查找結構示意圖如下:

圖 16.2.1: 二級查找結構示意圖

二級查找結構由一級查找表和二級子表構成,一個查找表中的每個節(jié)點指向一個二級查找子表。查找時,先將關鍵詞映射成一級查找表的位置,然后將對應位置的二級子表取出,在子表中找到對應的查找目標數(shù)據(jù)。

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

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

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

為了解決二級查找結構中的不足,下面來看看多級查找結構的設計思想。

多級查找結構設計思想

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

如果拆分后的子表內插入的數(shù)據(jù)過多時,可以繼續(xù)將其分拆,這樣一直分拆下去,將形成一個多級的查找數(shù)據(jù)結構,下圖就是一個多級查找結構示意圖。

責任編輯:陳四芳 來源: blog.csdn.net
相關推薦

2021-05-09 20:22:41

順序查找二叉查找數(shù)據(jù)結構

2012-12-11 09:37:03

開源硬件開源軟件

2023-10-06 23:56:42

順序查找Python

2010-08-18 13:58:46

路由器啟動順序

2014-08-14 10:38:30

SQL Server查詢

2021-07-09 19:04:55

Cache查找消息

2013-05-20 09:51:00

計算機書籍書籍封面語言書籍

2011-03-17 17:10:49

iptablesmatchpolicy

2023-03-02 06:01:00

ExcelAI工具

2017-12-26 11:13:41

Linuxfind文件查找

2021-09-13 12:15:57

Linux文件命令

2011-11-08 09:46:10

2012-12-03 09:32:22

ARP

2011-10-31 10:24:03

Linux死機

2021-08-02 14:44:03

iOS 15查找iPhone

2023-08-08 15:50:17

2009-10-20 18:30:03

Oracle查找用戶表

2022-04-15 10:37:00

權限進程UAC

2021-01-14 18:17:33

SpringFrameIOCJava

2013-07-23 14:48:19

PowerShell
點贊
收藏

51CTO技術棧公眾號