Exemplo n.º 1
0
        private static void NBodyConsole()
        {
            int    N     = 10000;
            int    steps = 1;
            double dt    = 100000;

            Body[] bodies = NBodySolver.GenerateRandomBodies(N);


            // To make a fair comparison, we call
            // each method once, to let the JIT kick in
            NBodySolver.ParallelCalcForceAndUpdate(bodies, dt);
            NBodySolver.SequentialCalcForceAndUpdate(bodies, dt);


            Console.WriteLine("Starting parallel N-body solver...");
            long start = DateTime.Now.Ticks / 10000;

            for (int i = 0; i < steps; i++)
            {
                NBodySolver.ParallelCalcForceAndUpdate(bodies, dt);
            }
            long end  = DateTime.Now.Ticks / 10000;
            long tPar = end - start;

            Console.WriteLine("Time spent: " + tPar);


            Console.WriteLine("Starting sequential N-body solver...");
            start = DateTime.Now.Ticks / 10000;
            for (int i = 0; i < steps; i++)
            {
                NBodySolver.SequentialCalcForceAndUpdate(bodies, dt);
            }
            end = DateTime.Now.Ticks / 10000;
            long tSeq = end - start;

            Console.WriteLine("Time spent: " + tSeq);
            Console.WriteLine("Speed up: " + ((double)tSeq / tPar));
        }