La respuesta corta es que es completamente irrelevante, solo use {array}.Length
.
Pero mientras lo hacemos, decidí comprobar qué hace realmente el código …
- Si cada solución recursiva se puede transformar en una iterativa, ¿por qué usar la recursividad?
- 1,000 participantes toman un examen que consta de 100 preguntas y 5 opciones por pregunta. ¿Cuál es el mejor enfoque (algoritmo) para encontrar todos los pares posibles de participantes con al menos un 80% de coincidencia en las opciones que eligieron?
- ¿Se puede usar la GPU para optimizar los algoritmos gráficos?
- ¿Cuál de estos me dará la mejor oportunidad para usar los algoritmos y las estructuras de datos que se enseñan en el desarrollo web de la escuela o el desarrollo móvil?
- ¿Cómo funciona un árbol de expansión y cómo lo configuro?
Si soy sincero, no puedo leer exactamente el idioma intermedio, pero para las matrices nativas, recuperar la longitud a través de {array}.Length
parece ser un puñado de instrucciones en el mejor de los casos, en particular ldlen
, y probablemente 1–2 en cualquier dirección está configurando la operación correctamente.
De ninguna manera puedes superar eso con el conteo manual.
En cuanto a otras colecciones, la regla general es: si expone una propiedad llamada .Count
o .Length
, puede esperar razonablemente que sea O (1), por lo que no es necesario almacenarla. Si necesita llamar a una función llamada .Count()
, probablemente iterará sobre la colección para contarla, lo que dará como resultado O (n). Si necesita el recuento repetidamente, puede ser una buena idea almacenarlo temporalmente (¡pero no lo haga un seguimiento por separado! Si lo necesita, está utilizando el tipo de colección incorrecto).
Ejemplos:
List
tiene una propiedad .Count
y probablemente realiza un seguimiento interno del recuento de elementos. O (1). No es necesario guardarlo usted mismo.
IEnumerable
solo tiene un método .Count()
. Si necesita usar repetidamente el recuento de elementos, calcule una vez y recuérdelo hasta que termine de usarlo.
Resumen: solo use {array}.Length
. No importará