gpt4 book ai didi

java - 将 Java BigInteger 用于巨大位掩码的性能影响

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:30:21 25 4
gpt4 key购买 nike

我们面临一个有趣的挑战。我们必须控制对驻留在“容器”中的数据的访问。可能会有数十万个“垃圾箱”。对每个垃圾箱的访问都是单独控制的,但这些限制可以而且很可能会重叠。我们正在考虑为每个 bin 分配一个位掩码中的位置(1、2、3、4 等)。

然后,当用户登录系统时,我们会查看他的安全属性并确定允许他查看哪些 bin。有了这些信息,我们为这个用户构建了一个位掩码,其中“设置”位对应于他允许看到的 bin 的标识符。所以如果他能看到 bins 1、3 和 4,他的位掩码就是 1101。

因此,当用户搜索数据时,我们可以查看返回行的 bin 索引,看看该位是否设置在他的位掩码上。如果他的位掩码设置了那个位,我们就让他看到那一行。我们计划将位掩码存储为 Java 中的 BigInteger

我的问题是:假设索引号没有变得比 Integer.MAX_INT 大,BigInteger 位掩码是否会扩展到数十万位位置?在 n 可能很大(例如 874,837)的情况下运行 BigInteger.isBitSet(n) 是否需要永远?创建这样一个 BigInteger 会花很长时间吗?

其次:如果您有其他方法,我很想听听。

最佳答案

如果不经常更改,BigInteger 应该很快。

一个更明显的选择是 BitSet这是为这类事情设计的。对于查找位,我怀疑性能是相似的。对于创建/修改,使用 BitSet 会更有效。

注意:PaulG 评论说差异“令人印象深刻”并且 BitSet 更快。

关于java - 将 Java BigInteger 用于巨大位掩码的性能影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12498363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com