そりゃ300bpsにくらべりゃ高速でしょうけど。
かなり前のことですが、膨大なログを吐きまくるアプリがありました。
ログレベルが7段階くらいあって、最高にするとバッファが溢れてクラッシュするという。
で、もっとも信頼できるシリアルにログを吐くんです。
ご存知でしょうが、シリアルにはバッファが2段あることが多いです。
ドライバのバッファと、LSIのハードウェアバッファです。
バッファがあっても、つねに満杯なら無いのと同じです。
115200bpsで、秒間1MBのログを吐いたらどれだけCPU時間を食うか計算してみてください。
1MB=8Mb
8000000÷115200=69秒
調歩同期式でストップビット1なら1バイトで10ビットなのでもっと遅いです。これは簡易的な計算です。
たとえば、たった100KBでも、0.7秒かかるということです。1秒2秒を争う性能を謳うなら、シリアルログは停止しないといけません。
CPU時間だけでなくIO帯域も占有します。メモリマップトならバスは占有されっぱなしでしょうね。
ドライバからシリアルログを吐くなどというのは、暴挙以外の何者でもありません。
お分かりでしょうか。
コメント