c – 用于计算循环缓冲区中剩余空间的简化算法?

我想知道是否有一种更简单的(单一)方法来计算循环缓冲区中的剩余空间而不是这个?
int remaining = (end > start)
                ? end-start
                : bufferSize - start + end;

解决方法

如果您担心预测条件不佳会降低cpu管道的速度,您可以使用:
int remaining = (end - start) + (-((int) (end <= start)) & bufferSize);

但这可能是过早的优化(除非你真的把它确定为热点).坚持使用您当前的技术,这种技术更具可读性.

相关文章

对象的传值与返回说起函数,就不免要谈谈函数的参数和返回值...
从实现装饰者模式中思考C++指针和引用的选择最近在看...
关于vtordisp知多少?我相信不少人看到这篇文章,多半是来自...
那些陌生的C++关键字学过程序语言的人相信对关键字并...
命令行下的树形打印最近在处理代码分析问题时,需要将代码的...
虚函数与虚继承寻踪封装、继承、多态是面向对象语言的三大特...