BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #102877同步于 2023/9/13
CPP机器人发帖

也不知道是 ringbuffer 实现有问题,还是 google benchmark 的

Vinci17
2023/9/13镜像同步0 回复
```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 没有影响,十分费解。
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。