Exemplo n.º 1
0
        private Entity CreateEntity(int key, decimal value0, decimal value1, decimal value2)
        {
            var entity = _metadata.CreateEntity(new[] { key });

            entity.Set(_property0, value0);
            entity.Set(_property1, value1);
            entity.Set(_property2, value2);

            return(entity);
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            if (args.Length < 6)
            {
                Console.WriteLine("Usage:\tBenchmark.exe <s or p> <key number> <key size> <property number> <entity number> <iteration> <seed>");
                Console.WriteLine("Sample:\tBenchmark.exe s 5 3 10 100000 100 231347");
                return;
            }

            var isParallel    = args[0] == "p";
            var keyCount      = Int32.Parse(args[1]);
            var keySize       = Int32.Parse(args[2]);
            var propertyCount = Int32.Parse(args[3]);
            var entityCount   = Int32.Parse(args[4]);
            var iteration     = Int32.Parse(args[5]);
            var seed          = args.Length < 7 ? DateTime.Now.Millisecond : Int32.Parse(args[6]);

            Console.WriteLine("Parallel: " + isParallel);
            Console.WriteLine("Key number: " + keyCount);
            Console.WriteLine("Key size: " + keySize);
            Console.WriteLine("Property number: " + propertyCount);
            Console.WriteLine("Entity number: " + entityCount);
            Console.WriteLine("Iteration: " + iteration);
            Console.WriteLine("Seed: " + seed);
            Console.WriteLine();

            var random = new Random(seed);

            var metadata = new EntityMetadata(keyCount, propertyCount);
            var config   = CreateAggregationConfig(metadata);

            var set = new EntitySet();

            foreach (var keys in InfiniteKeys(keyCount, keySize).Take(entityCount))
            {
                set.Add(metadata.CreateEntity(keys));
            }

            Console.Write("Preparing...");

            var watch = new Stopwatch();

            watch.Start();

            var service = isParallel ? (IAggregationService) new ParallelAggregationService() : new SerialAggregationService();
            var root    = service.Aggregate(set, config, metadata);

            root.Start();

            Console.WriteLine("Done");

            PrintMessage(iteration, 0);

            for (var i = 0; i < iteration; i++)
            {
                var num = 0;

                foreach (var entity in set)
                {
                    foreach (var property in metadata.Properties)
                    {
                        entity.Set(property, (decimal)(random.NextDouble() * 1000000));
                    }

                    if (++num % 1000 == 0)
                    {
                        PrintMessage(iteration, i + num * 1.0 / entityCount);
                    }
                }

                PrintMessage(iteration, i + 1);
            }

            Console.WriteLine();
            Console.WriteLine("Waiting for completion.");

            while (root.Running)
            {
                Thread.Sleep(100);
            }

            Console.WriteLine("Time: " + watch.Elapsed);

            var postfix = DateTime.Now.ToString("yyyyMMdd-HHmmss");

            Dump(set, metadata, "Source-" + postfix + ".csv");
            Dump(root.Result, metadata, config, "Result-" + postfix + ".csv");
        }