【发布时间】:2015-11-13 15:23:53
【问题描述】:
在java中,BitSet的内部数据存储为long[]而不是int[],我想知道为什么?这是jdk中的代码:
/**
* The internal field corresponding to the serialField "bits".
*/
private long[] words;
如果一切都与性能有关,我想知道为什么 long[] 存储会获得更好的性能。
【问题讨论】:
-
我想知道为什么不呢?将其存储为 int[] 究竟有什么更好的方法?
-
如果我不得不猜测我会说这可能与现在大多数人都在 64 位机器/操作系统上的事实有关,因此长期操作往往得到更好的支持/更快。我真的不认同 Santi 的论点。
-
@devouredelysium 我认为“大多数人都使用 64 位”确实是一个非常大胆的声明。除了轶事之外,你有任何证据支持这一点吗?鉴于 Java 被设计为在无数平台(包括许多嵌入式系统)上运行,我真的认为这不是设计决策背后的原因。
-
@daiscog:但他们选择了多头而不是整数。如果你看一下 BitSet 的源代码,它清楚地表明:“BitSets 被打包成“单词”的数组。
-
@devouredelysium 对不起,我想你可能误解了我的意思。我知道他们选择长整数而不是整数,但我是说我不相信你给出的原因就是他们这样做的原因。
标签: java performance bitset