【发布时间】:2011-01-28 11:04:30
【问题描述】:
我正在开发一款游戏,为了安全起见,任何用户(程序员)只能将 ID 存储到对象而不是指针,并且必须使用此 ID 来获取指向对象的指针,以便必须有一些高质量的独处时间。
让我们使用最坏的情况:每个 ID 都在使用中。它是 64 位的,所以你可以去:18446744073709551616 个 ID 进行搜索。很多数据都存储在数据库中,我们的程序查找要么返回一个指针,要么返回一个空指针。空指针意味着程序必须访问数据库才能加载对象,之后它将有一个指针。
想法: 所以我在这里知道的唯一真正的技巧是二进制搜索。因此,在最坏的情况下,这意味着每次 ID 查找要进行 64 次比较。
我的另一个想法是创建一个静态空间分区,这是一棵树,其中每个分支都分成 2 次方的分支,但只到合理的深度。在 ID 上使用按位运算符而不是模运算符来找出它在每个级别上属于哪个分支。树中每个可能的分支总是存在的,但在某个深度它们会停止,并且仍然需要进行二分搜索,因为值的确切数量仍然未知。
你有什么想法?
【问题讨论】: