TaskFactory.FromAsync
TPLを使用TaskFactory.StartNew
することと、メソッドのブロックバージョンを使用することの間にパフォーマンスへの影響があるかどうか疑問に思いました。100以下の同時接続をサポートするTCPサーバーを作成しています。最初のオプションでコードを記述し、続行を使用して複数の読み取りおよび書き込み操作を連鎖させた後、私は醜い、デバッグが難しいコードを残されました。
同期バージョンでコードを記述し、それをタスクでラップすると、複雑さが軽減され、テスト容易性が向上すると思いますが、これを行うことによるパフォーマンスへの影響が心配です。
たとえば、これら2つの呼び出しの間にパフォーマンスの違いはありますか。
NetworkStream stream;
byte[] data;
int bytesRead;
//using FromAsync
Task<int> readChunk = Task<int>.Factory.FromAsync (
stream.BeginRead, stream.EndRead,
data, bytesRead, data.Length - bytesRead, null);
//using StartNew with blocking version
Task<int> readChunk2 = Task<int>.Factory.StartNew(() =>
stream.Read(data, bytesRead, data.Length - bytesRead));