Actualmente estoy trabajando en una aplicación que es responsable de calcular las permutaciones aleatorias de una matriz dentada.¿Una forma extremadamente rápida de clonar los valores de una matriz dentada en una segunda matriz?
Actualmente, la mayor parte del tiempo en la aplicación se utiliza copiando la matriz en cada iteración (1 millón de iteraciones en total). En mi sistema actual, todo el proceso tarda 50 segundos en completarse, 39 de esos segundos dedicados a la clonación de la matriz.
Mi rutina gama de clonación es la siguiente:
public static int[][] CopyArray(this int[][] source)
{
int[][] destination = new int[source.Length][];
// For each Row
for (int y = 0; y < source.Length; y++)
{
// Initialize Array
destination[y] = new int[source[y].Length];
// For each Column
for (int x = 0; x < destination[y].Length; x++)
{
destination[y][x] = source[y][x];
}
}
return destination;
}
¿Hay alguna manera, seguros o inseguros, para lograr el mismo efecto que el anterior, mucho más rápido?
¿Ha intentado utilizar matrices multidimensionales en lugar de irregulares, es decir 'static int [,]' en lugar de 'static int [] []'? –