chunk_indices.AddRange(new int[6] { 0 + length, 1 + length, 2 + length, 3 + length, 2 + length, 1 + length });
Parece funcionar muy lentamente y toma alrededor de 1 microsegundo, lo que es mucho tiempo considerando cuántas veces lo llamo, ¿cómo puedo hacerlo más rápido?
Respuestas
1 para la respuesta № 1AddRange
es útil si tiene una matriz u otra colección que puede transformar en una matriz para comenzar; sin embargo, aquí puedes llamar Add
repetidamente también.
chunk_indices.Add(length);
chunk_indices.Add(length + 1);
chunk_indices.Add(length + 2);
chunk_indices.Add(length + 3);
chunk_indices.Add(length + 2);
chunk_indices.Add(length + 1);
1 para la respuesta № 2
Otra forma es Array. Copia como esta.
int[] source = new int[6] { 0 + length, 1 + length, 2 + length, 3 + length, 2 + length, 1 + length });
//
// Assuming the chunk_indices has 6 elements already allocated.
//
Array.Copy(source, chunk_indices, 6);
La implementación interna de AddRange llama a Array.Copy o CopyTo normalmente. Por lo tanto, es imposible que AddRange tenga un mejor desempeño que un Array.Copy simple.
Más investigación reveló otra opción, más rápida que la anterior:
// Copy the first 24 bytes from source to chunk_indices
Buffer.BlockCopy(source, 0, chunk_indices, 0, 6 * sizeof(int));
0 para la respuesta № 3
En general, el método AddRange acepta la matriz de parámetros para que pueda probar
chunk_indices.AddRange(length, 1 + length, 2 + length, 3 + length, 2 + length, 1 + length);