ロボット、千葉ロッテマリーンズについていいかげんなことを書きます。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
とりあえず昨日はPython版でCDRによる変換処理のどの程度時間がかかるか計測しましたが、今回はC++版で計測します。
まずは500KBのデータを通信したときの結果です。
遅延時間(同一プロセス):1.569[ms]
遅延時間(別プロセス):9.08[ms]
符号化:0.493[ms]
復号化:0.298[ms]
次に50KBのデータを通信したときの結果です。
遅延時間(同一プロセス):0.174[ms]
遅延時間(別プロセス):1.281[ms]
符号化:0.0266[ms]
復号化:0.0375[ms]
やはり何か結果がおかしいように思います。
と言うか500KB・別プロセスの時にPythonより通信が遅くなっているので間違っている可能性大ですね。
他の人が通信の遅延時間を計測した結果を見てみますと、このサイトの人は1MBで6msとかなので僕の実験の500KBの通信より速いです。こちらのページの人の実験結果を見てみると上の人と似たような結果なので多分僕が間違っています。ひょっとしたらPCの性能の問題かもしれませんが、他のPCで動作確認するのも面倒なので誰か検証してください。とりあえず他の人が作った計測用のRTCで別プロセス・500KBの通信遅延時間を計測した所9msかかることが分かりました。糞みたいなPCですみません。
苦しいですけど僕の実験結果が正しいと仮定すると、同一プロセス・500KBの時は符号化・復号化が遅延時間の59%、50KBの時は36%なのでデータサイズが大きくなればなるほどCDRでの変換の比重が大きくはなると思ったのですが、1MBで実験してみると35%まで下がっていました。ちなみに400KBだと60%、600KBだと39%、10MBだと47%でした。一体500KBを境にして何があったのでしょうね?
同一プロセス内通信だと前から言っているように関数呼び出しでデータを受け渡すはずなので、データサイズが大きくなって影響を大きく受けるのはCDRでの変換だと思ったのですが違ったかもしれないです。
とりあえず遅延時間とデータサイズの関係を調べてみたところ変なグラフになりました。
つまりどういう事ですかね?
見間違いでなければ500KB付近でいきなり遅延時間が増えているように見えるのですが。
さっき見たサイトで共有メモリでの通信と比較している結果がありましたが、512×512ではあまり差はないにもかかわらず1024×1024ではいきなり倍以上の差になっているのは同一プロセス内通信でCDRの変換の比重が大きくなるせいだと思ったのですが、何だか違うような雰囲気になってきました。
CORBA以外でのデータ転送を実装する場合に役立つかと思ったのですが、どうにも実験結果の信憑性が疑わしいので見直す必要があるようです。誰か実験した人がいれば教えてください。
ここからはCMakeの話です。
自分でCMake、ビルドする仕様で配布する場合、
何だか凄く今更ですね。
僕はCMakeを使いこなせておらずプロジェクト作成後にプロパティを変更することも多いので、CMakeする仕様自体があまり好きではありません。と言うかRTCの作成にCMakeを使うようになってから明らかに手間が増えた感じはあります。最近気づいたのですが、CMakeのGUIでプロジェクトファイルを作るよりも上記のようにコマンドからやった方が速いように感じます。Ubuntuで開発しているとCMakeがやたら速いのでおかしいとは思っていたのですが、ひょっとしてGUIでやると遅いのでしょうか?詳しい人がいれば教えてください。
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・
まずは500KBのデータを通信したときの結果です。
遅延時間(同一プロセス):1.569[ms]
遅延時間(別プロセス):9.08[ms]
符号化:0.493[ms]
復号化:0.298[ms]
次に50KBのデータを通信したときの結果です。
遅延時間(同一プロセス):0.174[ms]
遅延時間(別プロセス):1.281[ms]
符号化:0.0266[ms]
復号化:0.0375[ms]
やはり何か結果がおかしいように思います。
と言うか500KB・別プロセスの時にPythonより通信が遅くなっているので間違っている可能性大ですね。
他の人が通信の遅延時間を計測した結果を見てみますと、このサイトの人は1MBで6msとかなので僕の実験の500KBの通信より速いです。こちらのページの人の実験結果を見てみると上の人と似たような結果なので多分僕が間違っています。ひょっとしたらPCの性能の問題かもしれませんが、他のPCで動作確認するのも面倒なので誰か検証してください。とりあえず他の人が作った計測用のRTCで別プロセス・500KBの通信遅延時間を計測した所9msかかることが分かりました。糞みたいなPCですみません。
苦しいですけど僕の実験結果が正しいと仮定すると、同一プロセス・500KBの時は符号化・復号化が遅延時間の59%、50KBの時は36%なのでデータサイズが大きくなればなるほどCDRでの変換の比重が大きくはなると思ったのですが、1MBで実験してみると35%まで下がっていました。ちなみに400KBだと60%、600KBだと39%、10MBだと47%でした。一体500KBを境にして何があったのでしょうね?
同一プロセス内通信だと前から言っているように関数呼び出しでデータを受け渡すはずなので、データサイズが大きくなって影響を大きく受けるのはCDRでの変換だと思ったのですが違ったかもしれないです。
とりあえず遅延時間とデータサイズの関係を調べてみたところ変なグラフになりました。
つまりどういう事ですかね?
見間違いでなければ500KB付近でいきなり遅延時間が増えているように見えるのですが。
さっき見たサイトで共有メモリでの通信と比較している結果がありましたが、512×512ではあまり差はないにもかかわらず1024×1024ではいきなり倍以上の差になっているのは同一プロセス内通信でCDRの変換の比重が大きくなるせいだと思ったのですが、何だか違うような雰囲気になってきました。
CORBA以外でのデータ転送を実装する場合に役立つかと思ったのですが、どうにも実験結果の信憑性が疑わしいので見直す必要があるようです。誰か実験した人がいれば教えてください。
ここからはCMakeの話です。
自分でCMake、ビルドする仕様で配布する場合、
"C:\Program Files\CMake\bin\cmake" .\
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild Test.sln /p:Configuration=Release
という内容のバッチファイルを付けてくれればビルドが簡単なのでそうしてください。何だか凄く今更ですね。
僕はCMakeを使いこなせておらずプロジェクト作成後にプロパティを変更することも多いので、CMakeする仕様自体があまり好きではありません。と言うかRTCの作成にCMakeを使うようになってから明らかに手間が増えた感じはあります。最近気づいたのですが、CMakeのGUIでプロジェクトファイルを作るよりも上記のようにコマンドからやった方が速いように感じます。Ubuntuで開発しているとCMakeがやたら速いのでおかしいとは思っていたのですが、ひょっとしてGUIでやると遅いのでしょうか?詳しい人がいれば教えてください。
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・
PR
この記事にコメントする