Tengo un conjunto de objetos modelo que tienen una propiedad pública IsVisible
booleana. Todo lo que tengo que hacer es encontrar si al menos uno del conjunto tiene ese valor establecido en TRUE
. En otras palabras, si tengo 10.000 objetos, pero el segundo es true
, no necesito pasar por los otros 9.998. Ya tengo mi respuesta.Comprobación simple para ver si al menos un objeto en un conjunto tiene un valor de propiedad TRUE
Ahora sé que podría escribir mi propia función iterativa y partir al primer valor 'True
', pero espero que eso sea algo que LINQ puede hacer. En realidad, ni siquiera necesita ser LINQ. Cualquier sugerencia es bienvenida.
Por cierto, el idioma de elección es C#.
Actualización:
Ver mi último post aquí. He agregado algunos códigos de prueba y tiempos. Parece que LINQ es bastante pobre en cuanto a rendimiento comparado con solo hacer la prueba yo mismo. Claro que es más fácil escribir, pero en tiempos críticos, ya no estoy seguro.
Lo que más me sorprendió es la mayoría de las veces que corrí esto, la enumeración fue ganada y un buen clip, pero por alguna razón, cuando envolví la prueba en múltiples pases, parece haber cambiado a indexación con un el conteo en caché es el más rápido.
También noté que si no reinicio todo a 'falso', todas las pruebas restantes/repetidas parecen MUCHO más rápidas. De alguna manera, volver a establecer todo en FALSE (que fue intencionalmente exagerado para probar exactamente esto ...) cambia las cosas.
Interesante. No estoy seguro de qué camino tomaré ahora. Este no es un sistema de misión crítica así que tal vez voy a ir por la legibilidad, pero aún así. Interesante.
Al optimizar, debe sacrificar la velocidad de ejecución frente al costo del programador. La mayoría de los administradores de desarrollo prefieren comprar más servidores que pagar a más programadores, y solo una pequeña fracción de código se ejecuta en una ruta crítica. A menudo, el código que es más rápido de escribir y probar gana sobre el código que se ejecuta más rápido, cuando se tienen en cuenta todos los costos (incluido el costo del desarrollador). En mi experiencia, Linq es mucho más rápido de escribir, pero se ejecuta más lento. Todavía gana casi todo el tiempo en mi experiencia. – Slaggg
Slagg, todavía no tiene suficientes puntos para votar comentarios, pero sé que si lo hiciera, obtendría uno para eso. Puede ser obvio, pero la brevedad de esto realmente se destaca (no muy diferente al punto que también lo hace! ¡Inteligente amigo! ¡Muy inteligente!) – MarqueIV