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

2024-01-19

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

然后,当用户登录系统时,我们会查看他的安全属性并确定他可以查看哪些垃圾箱。利用该信息,我们为该用户构建一个位掩码,其中“设置”位对应于他被允许查看的垃圾箱的标识符。因此,如果他可以看到 bin 1、3 和 4,则他的位掩码将为 1101。

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

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

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


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

更明显的选择是BitSet http://docs.oracle.com/javase/7/docs/api/java/util/BitSet.html这是专为这类事情设计的。对于查找位,我怀疑性能是相似的。对于创建/修改,使用 BitSet 会更有效。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Java BigInteger 用于巨大位掩码的性能影响 的相关文章

随机推荐

  • 尝试呈现一个 UIViewController,其视图不在窗口层次结构中

    我有一个具有以下层次结构的多视图应用程序 启动 gt 导航控制器 gt 表视图控制器 gt 设置视图控制器 Splash 是应用程序入口点 因此成为根视图控制器 当我尝试通过设置视图控制器上的操作将图块添加到带区时 我收到调试器警告 app
  • 传单 GeoJSON 显示

    我遇到了一个任务 需要使用 leaflet js 库和 geojson 作为数据存储 几乎立即 遇到了以下问题 从 geojson 对象创建的多边形不显示在地图上 而由本机传单方法创建的多边形则完美地工作 这是我的代码 var map ne
  • 自编译 Roslyn 构建性能:不如最初发布的 Roslyn 版本快

    用一句话来形容我在做什么 检查分支Update 1来自罗斯林 github 存储库 https github com dotnet roslyn git 构建 csc exe 并使用我刚刚自己构建的 csc exe 版本编译随机解决方案 预
  • Pandas 的 ValueError - 传递值的形状

    我正在尝试使用 Pandas 和 PyODBC 从 SQL Server 视图中提取内容并将内容转储到 Excel 文件中 但是 在转储数据帧时出现错误 我可以打印列和数据帧内容 ValueError Shape of passed val
  • Eclipse 中的调试:无断点的变量快照

    我正在 Eclipse 中调试 Java 程序 我想观察一个特定的变量 但是 由于我的程序使用 GUI 因此创建断点会导致窗口冻结 例如 这尤其令人烦恼 尝试右键单击某个项目并导航上下文菜单 我实际上并不想停止程序 我只是想观察一个特定的变
  • 页面加载时使用 AJAX 不是一件坏事吗?

    我在上面看到过这个书呆子晚餐 http nerddinner codeplex com和其他网站 页面加载时 在 JavaScript 中 通过浏览器 将发出 AJAX 请求 从呈现初始页面的同一服务器获取一些数据 数据会很小 并且不存在会
  • AnyDac 又名 FireDac 无法生成更新查询

    我已经使用 UniDac 很长时间了 决定转向 FireDac 因为它具有良好的异步方法 在继续使用后 我发现我的数据编辑不再起作用 它给了我一个错误 FireDAC 物理 330 无法生成更新查询 更新表未定义 我在这里想做的是我有一个
  • Spring单例和Java单例(设计模式)有什么区别? [复制]

    这个问题在这里已经有答案了 我正在学习 Spring 框架 目前正在阅读一本关于它的书 这本书里说Spring单例与Java单例不同 这意味着什么以及有什么区别 谢谢 Java 单例的作用域是 Java 类加载器 Spring 单例的作用域
  • 严重:泄漏:在垃圾收集之前未调用 ByteBuf.release()。内蒂

    我已经创建了一些游戏服务器 并且刚刚与大约 10 个伙伴进行了测试 一切都很顺利 我们玩了大约 10 分钟 在游戏的某个时刻 游戏服务器停止为客户端提供服务 断开了每个人的连接 而且我连接到运行游戏的 VPS 的 SSH 也断开了连接 我不
  • Excel VBA 函数检查文件名是否包含该值

    我需要一个可以输出如下内容的公式 如果特定文件夹中的文件名包含 因为文件名在 字符后会有一个附加字符串 因此如果文件名包含单元格值 AB1 则在单元格 AC1 中添加完整文件名 用VBA可以实现吗 非常感谢 这在VBA中可行吗 当然 这是我
  • 如何反序列化 ArrayObject

    Note 我尝试过使用反序列化函数 但它说第一个参数应该是字符串而不是对象 所以我的问题 Q 如何在 php 中反序列化 ArrayObject 我的 ArrayObject 包含 O 11 ArrayObject 2 s 14 shopp
  • 将 WebKit 用于桌面应用程序 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • UIImage:调整大小,然后裁剪

    几天来 我一直在努力解决这个问题 尽管我一直觉得自己正处于启示的边缘 但我根本无法实现我的目标 在设计的概念阶段之前 我认为从 iPhone 的相机或库中抓取图像 使用相当于宽高比填充UIImageView 的选项 完全在代码中 然后cro
  • 是什么导致我的 WP7 应用程序崩溃?

    我在模拟器和手机本身上都发生过一些无法解释的崩溃 基本上 当我的应用程序崩溃时 我不会看到任何对话框 并且手机会返回主屏幕 我有以下代码来显示消息框 但这在某种程度上被绕过了 Code to execute if a navigation
  • 明星算法:距离启发式

    我正在使用 A 星算法 如此处所示 取自http code activestate com recipes 578919 python a pathfinding with binary heap http code activestate
  • 将等高线与等高线填充图对齐不规则网格极坐标图(半圆)

    我看到有几个人回答了使用不规则网格绘图的问题 我无法使轮廓线与填充轮廓对齐 此外 需要在绘图上显示数据点位置 以及以 30 度增量显示的径向辐条 以及在 10 20 30 处显示的半圆 Ref 在不规则网格上绘制等高线 https stac
  • 有没有一种快速方法可以在音频文件中查找(不一定识别)人类语音?

    我想编写一个程序 自动同步未同步的字幕 我想到的解决方案之一是以某种方式通过算法找到人类语音并根据其调整字幕 我发现的 API Google Speech API Yandex SpeechKit 与服务器一起工作 这对我来说不太方便 并且
  • SwiftUI 模态演示仅在 navigationBarItems 中工作一次

    当您从导航栏项目内的按钮显示模式时 SwiftUI 中存在一个错误 在下面的代码中 按钮 1 按预期工作 但按钮 2 只工作一次 struct DetailView View Binding var isPresented Bool Env
  • 为什么不能使用具有多态返回类型的原始类型?

    考虑以下两个类 public interface Foo
  • 将 Java BigInteger 用于巨大位掩码的性能影响

    我们面临着一个有趣的挑战 我们必须控制对驻留在 容器 中的数据的访问 可能会有数十万个 垃圾箱 对每个垃圾箱的访问是单独控制的 但限制可能而且可能会重叠 我们正在考虑为每个 bin 分配位掩码中的一个位置 1 2 3 4 等 然后 当用户登