我正在開發一款遊戲,並且爲了安全起見,任何用戶(程序員)只允許將ID存儲到對象而不是指針,並且必須使用此ID來獲取指向對象的指針,以便獨立於它一定的質量。快速64位整數ID查找/搜索
讓我們使用最糟糕的情況:每個ID都在使用中。它是64位,所以你去:18446744073709551616 ID來搜索。很多數據都存儲在數據庫中,我們的程序查找要麼返回一個指針,要麼返回一個空指針。空指針表示程序必須訪問數據庫才能加載對象,之後它將有一個指針。
想法: 所以我知道的唯一真正的技巧是二進制搜索。因此,在最糟糕的情況下,這意味着每次ID查找需要64次比較。
我的另一個想法是創建一個靜態空間分區,一棵樹,每個分支分裂成2個分支的權力,但只有一個合理的深度。在ID上使用一個按位運算符而不是模運算符來查找它在每個級別上屬於哪個分支。樹中的每個可能的分支總是存在,但是在某個深度它們停止並且仍然需要二分搜索,因爲確切數量的值仍然是未知的。
你有什麼想法?
是的,現在我明白我的想法是多麼愚蠢是:或許ID空間允許2^64的可能性,但所有的對象永遠不會全部加載到內存中的所有方式。謝謝,現在我感到有些慚愧;(對不起, – Xilliah 2011-01-28 18:36:47