public void ConfigureContainerTest()
        {
            var performanceCounter = new TotalTimePerformanceCounter();

            for (var i = 0; i < 10000; i++)
            {
                ThisSingleton(0, performanceCounter);
            }
        }
        public void PerformanceTest()
        {
            if (!long.TryParse(Environment.GetEnvironmentVariable("SERIES"), out var series))
            {
                series = 10000000;
            }

            var results = new List <TestResult>();

            foreach (var ioc in IoCGraphOf3ObjectsWithSingleton)
            {
                // Warmup
                ioc.Test(2, new TotalTimePerformanceCounter());
                GC.Collect();
#if !NETCOREAPP1_1
                GC.WaitForFullGCComplete();
#endif

                var performanceCounter = new TotalTimePerformanceCounter(ioc.PerformanceRate);
                ioc.Test((int)(series / ioc.PerformanceRate), performanceCounter);

                var result = new TestResult(ioc.Name, performanceCounter.Result);
                results.Add(result);
            }

            SaveResults(results, $"20 instances and 1 singleton {series.ToShortString()} times");
            results.Clear();

            foreach (var ioc in IoCGraphOf3Transient)
            {
                // Warmup
                ioc.Test(2, new TotalTimePerformanceCounter());
                GC.Collect();
#if !NETCOREAPP1_1
                GC.WaitForFullGCComplete();
#endif

                var performanceCounter = new TotalTimePerformanceCounter(ioc.PerformanceRate);
                ioc.Test((int)(series / ioc.PerformanceRate), performanceCounter);

                var result = new TestResult(ioc.Name, performanceCounter.Result);
                results.Add(result);
            }

            SaveResults(results, $"27 instances {series.ToShortString()} times");
            results.Clear();

            series /= 1000;
            foreach (var ioc in IoCComplexGraphOf3Transient)
            {
                // Warmup
                ioc.Test(2, new TotalTimePerformanceCounter());
                GC.Collect();
#if !NETCOREAPP1_1
                GC.WaitForFullGCComplete();
#endif

                var performanceCounter = new TotalTimePerformanceCounter(ioc.PerformanceRate);
                ioc.Test((int)(series / ioc.PerformanceRate), performanceCounter);

                var result = new TestResult(ioc.Name, performanceCounter.Result);
                results.Add(result);
            }

            SaveResults(results, $"{TestTypeBuilder.Count} unique instances {series.ToShortString()} times");
            results.Clear();
        }