1. 程式人生 > >B-樹的高度及效能分析

B-樹的高度及效能分析

     B-樹上操作的時間通常由存取磁碟的時間和CPU計算時間這兩部分構成。B-樹上大部分基本操作所需訪問盤的次數均取決於樹高h。關鍵字總數相同的情況下B-樹的高度越小,磁碟I/O所花的時間越少。
     與高速的CPU計算相比,磁碟I/O要慢得多,所以有時忽略CPU的計算時間,只分析演算法所需的磁碟訪問次數(磁碟訪問次數乘以一次讀寫盤的平均時間(每次讀寫的時間略有差別)就是磁碟I/O的總時間)。

1、B-樹的高度
     定理9.1 若n≥1,m≥3,則對任意一棵具有n個關鍵字的m階B-樹,其樹高h至多為:
        logt((n+1)/2)+1。
這裡t是每個(除根外)內部結點的最小度數,即
       
     由上述定理可知:B-樹的高度為O(logtn)。於是在B-樹上查詢、插入和刪除的讀寫盤的次數為O(logtn),CPU計算時間為O(mlogtn)。

2、效能分析
  ①n個結點的平衡的二叉排序的高度H(即lgn)比B-樹的高度h約大lgt倍。
     【例】若m=1024,則lgt=lg512=9。此時若B-樹高度為4,則平衡的二叉排序樹的高度約為36。顯然,若m越大,則B-樹高度越小。
  ②若要作為記憶體中的查詢表,B-樹卻不一定比平衡的二叉排序樹好,尤其當m較大時更是如此。
     因為查詢等操作的CPU計算時間在B-樹上是
        O(mlogt
n)=0(lgn·(m/lgt))
而m/lgt>1,所以m較大時O(mlogtn)比平衡的二叉排序樹上相應操作的時間O(lgn)大得多。因此,僅在記憶體中使用的B-樹必須取較小的m。(通常取最小值m=3,此時B-樹中每個內部結點可以有2或3個孩子,這種3階的B-樹稱為2-3樹)。