我正在开发一款游戏,并且为了安全起见,任何用户(程序员)只允许将ID存储到对象而不是指针,并且必须使用此ID来获取指向对象的指针,以便独立于它一定的质量。快速64位整数ID查找/搜索
让我们使用最糟糕的情况:每个ID都在使用中。它是64位,所以你去:18446744073709551616 ID来搜索。很多数据都存储在数据库中,我们的程序查找要么返回一个指针,要么返回一个空指针。空指针表示程序必须访问数据库才能加载对象,之后它将有一个指针。
想法: 所以我知道的唯一真正的技巧是二进制搜索。因此,在最糟糕的情况下,这意味着每次ID查找需要64次比较。
我的另一个想法是创建一个静态空间分区,一棵树,每个分支分裂成2个分支的权力,但只有一个合理的深度。在ID上使用一个按位运算符而不是模运算符来查找它在每个级别上属于哪个分支。树中的每个可能的分支总是存在,但是在某个深度它们停止并且仍然需要二分搜索,因为确切数量的值仍然是未知的。
你有什么想法?
是的,现在我明白我的想法是多么愚蠢是:或许ID空间允许2^64的可能性,但所有的对象永远不会全部加载到内存中的所有方式。谢谢,现在我感到有些惭愧;(对不起, – Xilliah 2011-01-28 18:36:47