Powerful generic class for a generic abstraction of IEqualityComparer.
jueves, 17 de noviembre de 2016
domingo, 6 de noviembre de 2016
Extendiendo LinQ
Como hemos mencionado en otros posts y en otras ocasiones,
la librería principal de LinQ,
System.Linq, está formada por un
conjunto de métodos extensores que en la mayoría de los casos expande la
funcionalidad del tipo
IEnumerable<T>. Por este motivo, y por facilidad de generación
de este tipo de métodos, alargar, dilatar, mejorar o incluso moldear muchos de
ellos, se vuelve una tarea muy simple y en ocasiones bastante gratificante y
útil.
domingo, 30 de octubre de 2016
PLinQ 2
En este nuevo post de PLinQ,
nos vamos a centrar en los métodos más importantes de ParalallelEnumerable, decimos los más importantes, ya que nos
ofrecen una funcionalidad extra para nuestras consultas parametrizadas.
Cabe destacar, como nombramos en el anterior post de PLinQ,
que la clase ParallelEnumerable,
tiene una definición para cada uno de los métodos
extensores (operadores de consulta) de la clase System.LinQ, para hacer completamente transparente su uso, de
modo que pensemos que estamos utilizando una consulta simple a un IEnumerable.
sábado, 22 de octubre de 2016
PlinQ 1
A forma de introducción, PLinQ,
ofrece la capacidad de realizar consultas LinQ
To Objects, de forma paralela, ósea
utilizando todos los cores
(núcleos) de el microprocesador. En un primer vistazo, podemos pensar que esto
es magia, pero como veremos a continuación, no es algo que sea 100%
recomendable en todos los casos, y puede llegar a tener una serie de
consideraciones y fallos, que o bien no conocemos o no estamos acostumbrados en
la programación síncrona.
Una de las ideas que solemos tener en nuestra cabeza acerca
de la programación en paralelo, es que si poseemos una máquina con 4 cores o microprocesadores, un
trabajo que tarda en hacerse 20 segundos, debería de tardar 20/4, solo 5
segundos. Esto no es cierto, hay algunos casos en que la ejecución sobre un
único núcleo es más rápida que sobre n.
La diferencia radica, en que para poder hacer una ejecución en paralelo es
necesario particionar la información en trozos, para que cada uno de estos, sea
tratado por un núcleo y luego volver a fusionar la información. Todo este
trabajo, conlleva un sobrecoste, que en ocasiones no es conveniente.
lunes, 16 de mayo de 2016
Let
Una entrada que pudiera ser no merecedora de un espacio para
ella sola. La cláusula Let,
tiene una serie de virtudes que van desde una mejora notable en la lectura y
comprensión del código, hasta un incremento en el rendimiento por la reducción
de llamadas redundantes.
La única nota negativa, pero no menos importante, es que
esta cláusula, solo puede utilizarse con sintaxis de consulta (azúcar sintáctico), por lo que nuestras queridas Lambdas se quedan fuera.