我想知道是否有一种更简单的(单一)方法来计算循环缓冲区中的剩余空间而不是这个?
int remaining = (end > start) ? end-start : bufferSize - start + end;
j_random_hac.. 8
如果您担心预测条件不佳会降低CPU管道的速度,您可以使用:
int remaining = (end - start) + (-((int) (end <= start)) & bufferSize);
但这可能是过早的优化(除非你真的把它确定为热点).坚持使用您当前的技术,这种技术更具可读性.
如果您担心预测条件不佳会降低CPU管道的速度,您可以使用:
int remaining = (end - start) + (-((int) (end <= start)) & bufferSize);
但这可能是过早的优化(除非你真的把它确定为热点).坚持使用您当前的技术,这种技术更具可读性.
嗯...
int remaining = (end - start + bufferSize) % bufferSize;
13个令牌,我赢了吗?