【发布时间】:2010-10-05 18:03:32
【问题描述】:
1) 在 32 位 CPU 上,访问由 32 个布尔值组成的数组还是访问一个字中的 32 位更快? (假设我们要检查第 N 个元素的值,可以使用位掩码(设置第 N 位)或整数 N 作为数组索引。)
在我看来,数组会更快,因为所有常见的计算机架构本身都在字级别(32 位、64 位等,并行处理)工作,并且访问子字位需要额外的工作。
我知道不同的编译器会以不同的方式表示事物,但似乎底层硬件架构会决定答案。还是答案取决于语言和编译器?
而且, 2)如果这个数组代表我在客户端和服务器之间传递的状态,速度答案是否会反转? 阅读问题“How use bit/bit-operator to control object state?”时想到了这个问题
附:是的,我可以自己编写代码来测试这个,但是 SO 社区就不能一起玩了!
【问题讨论】:
-
布尔值不必是 32 位,正如您在您的问题中所指出的那样。大小由实现定义。
-
布尔大小取决于编译器的实现。