Example #1
0
        static void TestProductDistinctParallel()
        {
            int count = 100;

            // Los datos de entrada
            var data = ProductSet
                       .Samples(count);

            // Asociamos los datos con la regla de combinación
            var input = data
                        .Select(x => new ProductDistinctMonoid(x) as Monoid <ProductSet>)
                        .ToArray();

            // Reducción secuencial
            var seqRes = input.Aggregate(ProductDistinctMonoid.Empty, (a, b) => a * b);

            Console.WriteLine("seqRes: {0}", seqRes);

            // Reducción en paralelo
            // Ejemplo ilustrativo, pueden ser varios servidores.
            var parRes = input.AsParallel().Aggregate(ProductDistinctMonoid.Empty, (a, b) => a * b);

            Console.WriteLine("parRes: {0}", parRes);
            Console.WriteLine("seqRes == parRes: {0}", seqRes == parRes);
            Console.WriteLine();
        }
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }
            if (!(obj is ProductSet))
            {
                return(false);
            }
            ProductSet other = (ProductSet)obj;

            return(_items.SetEquals(other._items));
        }