2016/05/25

[c/c++]リングバッファふたたび

たぶん、もっと格好のよいリングバッファ実装があるはず。。。
その思いが捨てられず、探していた。

 

Learn C The Hard Way
RingBuffer_write()を見ると、memcpy()しているのだが、引数のlengthをそのまま使っている。
バッファがあふれそうな気がするのだが。。。
マクロの中でmoduloを使っているけど、書込んだ後の話だし。
<string.h>をincludeしているから、memcpy()に秘密があるわけでも無さそうだし。。。

わからん。
check()で"Not enough space"とあるから、一度に書き込めるサイズは連続したスペースの分まで、ということだろうか。

 

循環バッファ - アルゴリズムとデータ構造 | ++C++; // 未確認飛行 C
こちらはmoduloを使っているが、サイズを2のべき乗にすることで速度の高速化を図っているとのこと。
そうか、nRF51 SDKのバッファサイズが2のべき乗しか許可しないのは、このしくみが使われていたのか。。。


Googleで5ページ分ほど調べたが、気になるのはこれくらいだった。
あとは、1データずつ詰めていくタイプだ。

そこそこがんばって作ってみたのだが、あまり速度に需要はないのかもね。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。