【发布时间】:2012-05-10 04:38:10
【问题描述】:
为什么环形缓冲区的大小必须是 2 的幂?
【问题讨论】:
-
是什么让你如此确定它必须是 2 的幂?
-
如果缓冲区数组的大小是 2 的幂,环形缓冲区将使用更有效的掩码而不是昂贵的模运算来维护自身。
-
OP应该解释为什么他认为(谁说的?)大小必须是2的幂,他应该标记一个有效的答案。我仍然认为这个问题(如果有道理的话)可以用“因为
x mod 2^n可以实现为x & (2^n - 1),假设项目存储在索引从0到2^n-1的数组中的实现。然而,对于现代 CPU 和编译器来说,这实际上并不会产生太大的影响。
标签: circular-buffer