Descargar archivo con WebClient o HttpClient?

Estoy tratando de descargar un archivo desde una URL y tengo que elegir entre WebClient y HttpClient. He referenciadoesta artículo y varios otros artículos en internet. En todas partes, se sugiere ir a HttpClient debido a su excelente soporte asíncrono y otros privilegios .Net 4.5. Pero todavía no estoy totalmente convencido y necesito más aportes.

Estoy usando el siguiente código para descargar el archivo de internet:

Cliente web:

WebClient client = new WebClient();
client.DownloadFile(downloadUrl, filePath);

HttpClient:

using (HttpClient client = new HttpClient())
{        
    using (HttpResponseMessage response = await client.GetAsync(url))
    using (Stream streamToReadFrom = await response.Content.ReadAsStreamAsync())
    {
    }
}

Desde mi perspectiva, solo puedo ver una desventaja en el uso de WebClient, que sería la llamada no asíncrona, que bloquea el hilo de la llamada. Pero, ¿qué pasa si no me preocupa el bloqueo del hilo o el uso?client.DownloadFileAsync() aprovechar el soporte asíncrono?

Por otro lado, si uso HttpClient, ¿no estoy cargando cada byte de un archivo en la memoria y luego escribiéndolo en un archivo local? Si el tamaño del archivo es demasiado grande, ¿no será costosa la sobrecarga de memoria? Lo que podría evitarse si utilizamos WebClient, ya que escribirá directamente en el archivo local y no consumirá memoria del sistema.

Entonces, si el rendimiento es mi máxima prioridad, ¿qué enfoque debo usar para la descarga? Me gustaría ser aclarado si mi suposición anterior es incorrecta, y también estoy abierto a un enfoque alternativo.

Respuestas a la pregunta(4)

Su respuesta a la pregunta