に問題がありSystem.Net.Sockets.TcpClient
ます。
簡単なテスト アプリは、接続を開いてデータを送信し、閉じるだけです。反対側には単純なサーバーがあり、そのパフォーマンスは問題ありません。
コードは次のようになります。
var client = new TcpClient("localhost", 1234);
using (var stream = client.GetStream())
using (var writer = new StreamWriter(stream))
{
writer.Write("foo");
writer.flush();
}
client.Close();
問題なく動作しますが、単体テストの実行に 1000 ミリ秒以上かかっていることに気付きました。10回というループに入れたところ、10,000ms以上でした。
クライアントとサーバーの両方でタイミングを合わせて何時間もデバッグした後、遅い場所を見つけました。
修正は、次のコードを変更することでした。
var client = new TcpClient("localhost", 1234);
これに:
var client = new TcpClient();
client.Connect("localhost", 1234);
それがすべての違いを生んだ。現在、1 回のパスには約 10ms かかり、10 回のパスは 100ms 弱です。
どうして???