热门问题
时间线
聊天
视角
索引映射
来自维基百科,自由的百科全书
Remove ads
索引映射(Index mapping)也稱為直接定址(direct addressing)或平凡散列函數(trivial hash function)是計算機科學中對陣列的應用,利用陣列查表來找到主鍵所有全集分別對應的值[1]。 此方式適用在主鍵全集不大的情形,因此可以針對每一個可能的主鍵分配記憶體。 其效能是源至在任何陣列中查表的時間複雜度都是常數。
適用的陣列
有許多實例中的資料有效值限制在小範圍內。此時適合使用平凡散列函數,以數值作為查表的鍵值,以下是一些例子:
例子
利用平凡散列函數,非迭代式的查表法,可以完全消除條件判斷以及分支,減少程式中的指令路徑長度。
Roger Sayle提供一個程式[2],完全消除以下switch指令會有的多路分支:
inline bool HasOnly30Days(int m)
{
switch (m) {
case 4: // April
case 6: // June
case 9: // September
case 11: // November
return true;
default:
return false;
}
}
其作法是用以下的查表法:
inline bool HasOnly30Days(int m)
{
static const bool T[] = { 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0 };
return T[m-1];
}
參考資料
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads