TPL TaskFactory.FromAsync vs Tareas con métodos de bloqueo

Me preguntaba si había alguna implicación de rendimiento entre el uso de TPLTaskFactory.FromAsync y usandoTaskFactory.StartNew en versiones de bloqueo de los métodos. Estoy escribiendo un servidor TCP que no admitirá más de 100 conexiones concurrentes. Después de escribir código con la primera opción y encadenar múltiples operaciones de lectura y escritura con continuar con, me quedé con un código feo y difícil de depurar.

Creo que escribir código con la versión síncrona y luego envolverlo con una Tarea disminuiría la complejidad y aumentaría la capacidad de prueba, pero me preocupan las implicaciones de rendimiento de hacerlo.

Por ejemplo, ¿hay alguna diferencia de rendimiento entre estas 2 llamadas:

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));

Respuestas a la pregunta(2)

Su respuesta a la pregunta