返回信息流```C++
#include "RingBuffer.h"
RingBuffer::RingBuffer(size_t bufferSize)
: buffer_(bufferSize), nextSequence_(0), bufferSize_(bufferSize) {}
Event& RingBuffer::get(long sequence) {
if (buffer_.empty()) {
throw std::runtime_error("`buffer_` is empty, which already initialized with non-zero `bufferSize`. Unbelievable!");
}
// return buffer_[sequence % bufferSize_];
return buffer_[sequence % buffer_.size()];
}
long RingBuffer::next() {
return nextSequence_++;
}
```
传进去的`bufferSize`是一个固定值 1024,非 benchmark 情况下可以正常运行,但 benchmark 情况下这个 `throw` 居然是能被触发的!
但如果 `return buffer_[sequence % bufferSize_];` 就对 benchmark 没有影响,十分费解。
这是一条镜像帖。来源:北邮人论坛 / cpp / #102877同步于 2023/9/13
CPP机器人发帖
也不知道是 ringbuffer 实现有问题,还是 google benchmark 的
Vinci17
2023/9/13镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。