Array.Copy y Buffer.BlockCopy hacen lo mismo, pero BlockCopy
tienen como objetivo la copia rápida de matrices primitivas a nivel de bytes, mientras que Copy
es la implementación de propósito general. Mi pregunta es: ¿bajo qué circunstancias debe usar BlockCopy
? ¿Debería usarlo en cualquier momento cuando esté copiando matrices de tipos primitivos, o solo debe usarlo si está codificando para el rendimiento? ¿Hay algo inherentemente peligroso sobre el uso de Buffer.BlockCopy
más Array.Copy
?
byte[]
. No hubo diferencia en la versión de lanzamiento. A Array.Copy
veces, a veces Buffer.BlockCopy
(ligeramente) más rápido.
Array.Copy
es más bien una versión especializada; por ejemplo, solo puede copiar las mismas matrices de rango.
Marshal.Copy
:-). Bueno, utilíceloArray.Copy
para tipos de referencia, tipos de valores complejos y, si el tipo no cambia,Buffer.BlockCopy
para "conversión" entre tipos de valores, conjuntos de bytes y magia de bytes. F.ex. la combinación conStructLayout
es bastante poderosa si sabes lo que estás haciendo. En cuanto al rendimiento, parece que una llamada no administrada amemcpy
/cpblk
es la más rápida para eso; consulte code4k.blogspot.nl/2010/10/… .