Después de algunas observaciones, puede tener una mejor idea de los elementos totales en esa lista. A continuación, puede crear una nueva lista con una capacidad inicial en el constructor:
List<double> l = new List<double>(capacity);
Aparte de esto, es la estructura técnica y datos adecuada.
ACTUALIZACIÓN:
Si:
- sólo necesitan los
Add
y ToArray
funciones de la estructura List<T>
,
- Y realmente no se puede predecir la capacidad total
- Y terminas con más de 1K elementos
- y un mejor rendimiento es muy, muy (de verdad!) Su objetivo
entonces puede que desee para escribir su propia interfaz:
public interface IArrayBuilder<T>
{
void Add(T item);
T[] ToArray();
}
y luego escribir su propia implementación, lo que podría ser mejor que List<T>
. ¿Porqué es eso? porque List<T>
contiene una única matriz internamente y aumenta su tamaño cuando es necesario. El procedimiento para aumentar los costos de la matriz interna, en términos de rendimiento, ya que asigna nueva memoria (y tal vez copia los elementos de la matriz anterior a la nueva, no recuerdo). Sin embargo, si todas las condiciones descritas arriba son verdaderas, todo lo que necesita es construir una matriz, realmente no necesita todos los datos para ser almacenados en una sola matriz internamente.
Sé que es una posibilidad remota, pero yo creo que es mejor compartir esos pensamientos ...
Sé que esta pregunta es antigua, y podría estar equivocado acerca de esto, pero me parece que el OP estaba preguntando sobre la declaración 'l.ToArray();', como me he preguntado al respecto también.Si tiene que crear una nueva estructura de datos y luego copiar todos los datos y destruir el original, de hecho no es tan eficiente. Sería mucho más eficiente devolver la 'Lista' o cualquier otro tipo de datos que no necesite copiarse ni convertirse. –