我正在寻找 Java Bitset 实现的替代方案。我正在实现一个高性能算法,似乎使用 Bitset 对象会降低其性能。有任何想法吗?
Someone here https://stackoverflow.com/questions/605226/boolean-vs-bitset-which-is-more-efficient比较过boolean[]
to BitSet
并得出以下结论:
BitSet
比内存效率更高boolean[]
除了非常
小尺寸。每个boolean
数组中占用一个字节。号码
从runtime.freeMemory()
有点混乱BitSet
,但较少。
boolean[]
除了非常大的尺寸之外,CPU 效率更高,其中
他们差不多。例如,对于大小 100 万boolean[]
是关于
速度快四倍(例如 6 毫秒 vs 27 毫秒),十亿
他们差不多。
如果你谷歌,你也可以找到一些替代实现,比如JavaEWAH http://code.google.com/p/javaewah/,使用者阿帕奇蜂巢 http://hive.apache.org/, 阿帕奇火花 http://spark.apache.org/ and Eclipse JGit http://www.eclipse.org/egit/。它声称:
字对齐压缩的目标并不是达到最好
压缩,而是为了提高查询处理时间。因此,我们
尝试节省 CPU 周期,可能会牺牲存储空间。但是,那
我们实施的 EWAH 方案在存储方面总是比
在 BitSet 类中实现的未压缩位图)。不像
javaewah 的一些替代方案并不依赖于专利方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)