Supongamos que tenemos un socket de internet simple, y enviará 10 megabytes (porque quiero ignorar problemas de memoria) de datos aleatorios. ¿Existe alguna diferencia en el rendimiento o un método de mejores prácticas que uno debería usar para recibir datos? Los datos finales de salida deben estar representados por un byte []. Sí, sé que escribir una cantidad arbitraria de datos en la memoria es mala, y si estuviera descargando un archivo grande, no lo haría así. Pero, por el bien de los argumentos, ignorémoslo y supongamos que se trata de una cantidad pequeña de datos. También me doy cuenta de que el cuello de botella aquí probablemente no sea la gestión de la memoria sino la recepción del socket. Solo quiero saber cuál sería el método más eficiente para recibir datos.C# métodos de rendimiento para recibir datos de un socket?
Algunas maneras poco fiables ocurre es:
tener una lista y un tampón, después de que el buffer está lleno, agregarlo a la lista y al final list.ToArray() para obtener el byte []
Escribe el búfer en una secuencia de memoria, después de su construcción completa un byte [] de la secuencia.Longitud y léelo todo en ella para obtener la salida de byte [].
¿Hay una forma más eficiente/mejor de hacer esto?
Sí, esta parece ser la respuesta más simple pero buena, ¡gracias! – Daniel