C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: IPCとWCFの速度比較


(過去ログ 55 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■30414 / inTopicNo.1)  IPCとWCFの速度比較
  
□投稿者/ めろぱん (7回)-(2008/12/23(Tue) 01:05:35)

分類:[.NET 全般] 

開発環境:Visual Studio 2008
言語:Visual C#

※管理人様
 編集途中で送信してしまいました。
 お手数ですが、#30413を削除願います。

こんばんは、めろぱんと申します。

IPCとWCFの速度に関する質問です。

C#でプロセス間通信が必要になりました。
受け渡しするデータは20文字程度の文字列です。
マシン内でのみ通信ができればよく、少し調べてみると
IPCとWCFが使えそう、というのが分かり、
両方でサンプルプログラムを作ってみました。
両方とも、クライアントでボタンをクリックすると、
サーバーから文字列を取得し、画面に表示する、
というシンプルなものです。
WCFのBindingはNetNamedPipeBindingです。

この2つのサンプルを比べてみると、
IPCよりもWCFの方がレスポンスが悪いことが分かりました。
両方ともばらつきはあるのですが、
IPCは遅くても200ms程度であるのに対し、WCFは1000ms程度
かかる場合もあります。
クライアントでボタンをクリックしてからサーバーのメソッドが
呼ばれるまでの時間が上記時間の9割程度を占めるので、
通信部分で時間を食っているのか?と考えているところです。

ここで質問ですが、
IPCとWCF(NetNamedPipeBiding)では、WCFのほうが絶対的に遅い
ということはありませんでしょうか?
また、通信速度に影響するパラメータなどはありませんでしょうか?

たかだか1秒ですが、実際に操作してみるともたつき感が否めません。
IPCよりWCFが絶対的に遅い、というのならIPCを選択しようと思いますが、
そんなことはない!というならWCFを使いたいと思っています。

よろしくお願い致します。
引用返信 編集キー/
■30417 / inTopicNo.2)  Re[1]: IPCとWCFの速度比較
□投稿者/ aetos (54回)-(2008/12/23(Tue) 03:12:27)
No30414 (めろぱん さん) に返信
> ここで質問ですが、
> IPCとWCF(NetNamedPipeBiding)では、WCFのほうが絶対的に遅い
> ということはありませんでしょうか?

あらゆるケースにおいて常に絶対に、と言い切る根拠は持っていませんが、遅そうだなぁ、という気はします。
IPCはIPCでしかないのに対し、WCFはIPCでもあるし、他の機能も持っているからです。
速さが最優先課題ならIPCを選択するのはありでしょう。
WCFは速さではIPCに劣るかもしれませんが、それ以外のメリットがあるはずです。
そうしたメリットを(将来的にも)必要とするかどうかも、判断基準に入れていいんじゃないでしょうか。
引用返信 編集キー/
■30427 / inTopicNo.3)  Re[2]: IPCとWCFの速度比較
□投稿者/ なちゃ (235回)-(2008/12/23(Tue) 19:38:59)
IPCって、IPCチャネルを使ったリモーティングとかですか?

で、この時間は最初の1回なのか繰り返し呼び出した場合なのか、
通信量はどの程度なのか、
細かい条件はどんな感じなんでしょう?

なんとなく遅すぎるから最初の1回の速度かな?


特定の条件においてWCFが絶対的に不利ということは、まああっても不思議はありません。

引用返信 編集キー/
■30428 / inTopicNo.4)  Re[3]: IPCとWCFの速度比較
□投稿者/ なちゃ (236回)-(2008/12/23(Tue) 19:40:35)
おととと、通信量は少ないんですね…

引用返信 編集キー/
■30429 / inTopicNo.5)  Re[4]: IPCとWCFの速度比較
□投稿者/ なちゃ (237回)-(2008/12/23(Tue) 19:42:00)
あと、認証とか暗号化とかはどうなってます?

引用返信 編集キー/
■30493 / inTopicNo.6)  Re[5]: IPCとWCFの速度比較
□投稿者/ めろぱん (8回)-(2008/12/24(Wed) 22:33:13)
aetosさん
なちゃさん

お返事ありがとうございます。

aetosさん
私も漠然と遅そうだなぁという気はしてました。
WCFの仕組みを詳しく理解していませんが、通信機能の上に
いろいろかぶさっていてその分遅いイメージがあります。
WFCのメリットは、データと通信プロトコルを分離して、
それらの変更に容易に対応できるところ、と理解しています。
今回は速さ優先、将来通信方法が変更する可能性も低いので、
今のところの選択はIPCとなりそうです。
ただ、設定などで速さをあげることができるなら
(たとえばバッファサイズを小さくするとか。これ適当です)
と思い、質問してみました。

なちゃさん
IPCはIPCチャネルを使ったリモーティングのことです。
応答時間は前回の通信から時間が経過すると遅くなる傾向に
あるようです。
短い時間(1秒以下)で繰り返し行う場合は数ms程度で
終わることが多いです。
(でもこれはキャッシュとかが絡んでくるのかな?)
認証とか暗号化とかは・・・すみません、この辺はよく分かっておりません。
何もしていないので、デフォルトのまま、と思っております。
NetNamedPipeBinding.Securityプロパティはそれに関係
しますでしょうか?
試しにNetNamedPipeSecurityMode.Noneでインスタンス生成して
時間を計ってみましたが、ほとんど変わらず、でした。
引用返信 編集キー/
■30796 / inTopicNo.7)  Re[6]: IPCとWCFの速度比較
□投稿者/ めろぱん (9回)-(2009/01/06(Tue) 23:53:42)
少し時間が経過してしまいましたが、
未解決のままにしておくのもなんなんで・・・

結局今回はIPCを採用することにしました。
理由は#30493に書いたとおりです。
レスいただいた方、ありがとうございました。
引用返信 編集キー/
■30969 / inTopicNo.8)  Re[7]: IPCとWCFの速度比較
□投稿者/ めろぱん (11回)-(2009/01/10(Sat) 00:10:03)
解決済みにチェックするの忘れてました・・・
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -