Exemplo n.º 1
0
        static void Main(string[] args)
        {
            string rootPath      = string.Format(@"..{0}..{0}..{0}", Path.DirectorySeparatorChar);
            uint   numIterations = 0;

            if (args.Length == 1 && !UInt32.TryParse(args[0], out numIterations))
            {
                rootPath = args[0];
            }
            else if (args.Length == 2)
            {
                UInt32.TryParse(args[0], out numIterations);
                rootPath = args[1];
            }
            Console.WriteLine("Loading data from path {0}", rootPath);
            var portfolioProvider         = new PortfoliosProvider(rootPath + "datas/Portfolios");
            var productParametersProvider = new StocksPricesProvider(rootPath + "datas/Parameters");

            if (numIterations > 0)
            {
                Console.WriteLine("Benchmarking {0} times", numIterations);
                Benchmark(UInt32.Parse(args[0]), portfolioProvider, productParametersProvider);
                return;
            }

            Console.WriteLine(" * Starting BasicVarCalculator");
            var basicPerf = RunCalculator <BasicVarCalculator>(portfolioProvider, productParametersProvider);

            Console.WriteLine(" * Starting DataFlowCalculator with {0} processors", Environment.ProcessorCount);
            var dataFlowPerf = RunCalculator <DataFlowVarCalculator>(portfolioProvider, productParametersProvider);

            Console.WriteLine(" Delta t = {0} ms ({1:0.00} %)", dataFlowPerf - basicPerf, (dataFlowPerf - basicPerf) / (double)basicPerf * 100.0);
            Console.ReadKey();
        }
Exemplo n.º 2
0
        private static long RunCalculator <TCalculator>(PortfoliosProvider portfolioProvider,
                                                        StocksPricesProvider productParametersProvider) where TCalculator : IVarCalculator, new()
        {
            var stopwatch = new Stopwatch();

            stopwatch.Start();
            var calculator = new TCalculator
            {
                PortfolioProvider         = portfolioProvider,
                ProductParametersProvider = productParametersProvider
            };
            var result = calculator.Calculate();

            stopwatch.Stop();
            Console.WriteLine("\tResult -> {0}, Duration -> {1} ms",
                              result, stopwatch.ElapsedMilliseconds);
            return(stopwatch.ElapsedMilliseconds);
        }
Exemplo n.º 3
0
        static void Benchmark(uint nIterations, PortfoliosProvider portfolioProvider, StocksPricesProvider productParametersProvider)
        {
            double basicPerf    = 0;
            double dataFlowPerf = 0;

            for (var i = 0; i < nIterations; ++i)
            {
                basicPerf    += RunCalculator <BasicVarCalculator>(portfolioProvider, productParametersProvider);
                dataFlowPerf += RunCalculator <DataFlowVarCalculator>(portfolioProvider, productParametersProvider);
            }
            basicPerf    /= nIterations;
            dataFlowPerf /= nIterations;
            Console.WriteLine("{0} iterations: Basic = {1}, DataFlow = {2}", nIterations, basicPerf, dataFlowPerf);
            Console.WriteLine(" Delta t = {0} ms ({1:0.00} %)", dataFlowPerf - basicPerf, (dataFlowPerf - basicPerf) / basicPerf * 100.0);
        }