Ejemplo n.º 1
0
        public static BenchmarkResults BenchmarkWithAllSigners(bool isOptimal, DataSetLoader offlineLoader, DataSetLoader onlineLoader)
        {
            Console.WriteLine("Hacked online - online benchmark started");

            var onlineSigners  = onlineLoader.EnumerateSigners().ToList();
            var offlineSigners = offlineLoader.EnumerateSigners().ToList();

            var offlinePipeline = FusionPipelines.GetHackedOfflinePipeline();

            var benchmark = FusionPipelines.GetBenchmark(onlineSigners, isOptimal);

            foreach (var offSigner in offlineSigners)
            {
                Console.WriteLine(offSigner.ID + " started at " + DateTime.Now.ToString("h:mm:ss tt"));
                var onSigner = onlineSigners.Find(signer => signer.ID == offSigner.ID);
                Parallel.ForEach(offSigner.Signatures, offSig =>
                {
                    offlinePipeline.Transform(offSig);
                    var onSig          = onSigner.Signatures.Find(sig => sig.ID == offSig.ID);
                    var onToOnPipeline = FusionPipelines.GetHackedOnToOnPipeline(offSig.GetFeature(FusionFeatures.Bounds));
                    onToOnPipeline.Transform(onSig);
                }
                                 );
            }

            var onlinePipeline = FusionPipelines.GetOnlinePipeline();

            foreach (var onSigner in onlineSigners)
            {
                Parallel.ForEach(onSigner.Signatures, onSig =>
                {
                    onlinePipeline.Transform(onSig);
                }
                                 );
            }
            return(benchmark.Execute());
        }