c# performance list .net-4.0 stringcollection

c# - Preocupación de rendimiento: StringCollection vs List<String>



performance .net-4.0 (3)

En términos de rendimiento y eficiencia, serán muy similares.

List<string> podría ser un poco más rápido en realidad. Es una especie de envoltorio alrededor de ArrayList pregenérico. No hay boxeo / unboxing, pero todavía hay uno o dos pasos adicionales debajo del capó, IIRC.

StringCollection era útil antes de .NET 2.0 porque estaba fuertemente tipado en una cadena, algo muy común para querer una lista de. Sin embargo, sugeriría usar List<string> ahora. Como la mayoría de las asambleas marco y de terceros lo usarán en lugar de StringCollection, esto sería:

  • evitar una gran cantidad de fundición
  • evitar algo de confusión Otros desarrolladores (especialmente los más nuevos) se preguntarían constantemente cuál era la razón para usar StringCollection.

Me preguntaba cuándo debería usar List <string> y cuándo debería usar StringCollection .

Digamos que tengo que lidiar con un gran número de cadenas (como archivos de texto de 10 mb).

Sé que List <T> proporciona funciones más poderosas que StringCollection .

Pero a veces encuentro que la Lista <T> es lenta cuando, por ejemplo, le digo a Gridview que su fuente de datos es una Lista <Cadena> ...

Entonces, ¿alguien sabe los pros y los contras de estas colecciones, en relación con la velocidad y el peso en la memoria?

En cuanto a sus funcionalidades, estoy seguro de que todos estarán de acuerdo en decir que List es el mejor, así que mi pregunta no es sobre eso. Considere que la pregunta es sobre proyectos en Frameworks 4.0, por lo que ambos pueden ser utilizados.


List <string> no es un contenedor sobre ArrayList. Es una nueva implementación de ArrayList, implementada por tener una matriz (que se redimensiona al tamaño doble cuando el recuento llega a ser más grande que su longitud) y una propiedad de recuento.


Yo personalmente preferiría usar List<string> :

  • No es necesario recordar un tipo específico solo para cuerdas
  • Implementa el genérico IEnumerable<T> lugar de solo IEnumerable , y por lo tanto soporta LINQ
  • Es compatible con SilverLight
  • Es más idiomático para la mayoría de los desarrolladores (IMO)

Me sorprendería mucho encontrar que StringCollection es significativamente más rápido que List<string> ; mira si puedes respaldarlo con números. Mi única razón para dudar es que GridView podría tener compatibilidad con código StringCollection para que StringCollection haga rápido con ese tipo, pero eso me parece poco probable.