WCFは便利なライブラリですが、少し気になるのが「初回が遅い」ところです。
一度繋がってしまえば、気にならないくらいの速度なのですが・・・。しかし、その辺をエンドユーザに気づかれないように作りこむのもプログラマーの宿命!(笑)

遅くなってしまう部分は以下の通りです。

①WCFのチャンネル生成しているところ
②WCFで初回メソッドを呼ぶところ

①WCFのチャンネル生成しているところ

ChannelFactory.CreateChannel()を呼び出すあたりで、System.ServiceModel関連のライブラリをロードしているのに時間がかかっているようです。

以下の方も書かれているように、何度もチャンネルを作成するのはコストがかかるみたいです。
http://tnakamura.hatenablog.com/entry/20090804/wcf_channel_cost

無駄なチャンネルはCloseさせたほうがよいのですが、私はチャンネルオブジェクトをメンバ変数に保持して使いまわしています。(問題がある場合は別の方法を推奨します)

m_wcf = factory.CreateChannel(); // グローバルに格納


②WCFで初回メソッドを呼ぶところ

クライアントからメソッドをコールする時です。
ホスト側のリソース作成に時間がかかっていると思われます。セッション作成などに必要な準備をしているのでしょう。また、Webサービス(IISなど)で構築している場合は、サーバへアクセスするまでのコストも考えられるでしょう。

私は初回にデータ量のすくないメソッドなどを起動時コールして逃げています。
データベースアクセスのADO.NETなどの通信もそうですが、初回はどうしてもリソースの確保に時間がかかるので、それを知ったうえで遅さを隠蔽するように作れたらよいですね。