OpenRTM / OpenRTM-aist

OpenRTM-aist: RT-Middleware and OMG RTC implementation in C++ implemented by AIST
https://openrtm.org/
Other
19 stars 12 forks source link

データポートの通信が遅い #637

Closed Nobu19800 closed 5 years ago

Nobu19800 commented 5 years ago

Describe the bug データポートの通信が非常に遅く、ROSノード同士の通信と比較して数倍の時間がかかる。

To Reproduce

  1. CameraImage型のInPortとOutPortを接続する
  2. データのサイズを100kB以上に設定してデータを送信する
  3. データ転送までの時間を記録する

Reproducibility 100%

Expected behavior ROSの通信と大差のない通信速度になるようにする。

Screenshots or Logs

Environment

Additional context

主に以下のことが原因

ここで4つのリスナを登録しているため、送信時に2回、受信時に2回のデシリアライズが発生しているので当然遅くなる。これがないだけで25%ほど遅延が小さくなる。 この問題を解決するためにはConnectorListenerの実装を大幅に変更する必要がある。

これらの無駄を省いた結果、以下のようにROSより速くなりました。

rtm-ros

Nobu19800 commented 5 years ago

原因の特定とある程度の改善はできたので閉じます。