コード例 #1
0
        public void PerformanceMeasurementsCtor()
        {
            const int   logCount     = 16;
            string      configString = $"{{\"perf\":{{\"LogCount\":{logCount}}}}}";
            var         config       = Configuration.ConfigurationFromString(configString);
            const float duration     = 48.0f;
            var         perfConfig   = new PerformanceMeasurementConfigurationParameters(config, duration);
            var         perf         = new PerformanceMeasurements(VersionInfo.Version, VersionInfo.Description, perfConfig);

            const int defaultBinCount = 16;

            Assert.AreEqual("1.0", perf.FormatVersion);
            Assert.AreEqual(VersionInfo.Version, perf.FrameworkVersion);
            Assert.AreEqual(VersionInfo.Description, perf.FrameworkDescription);
            Assert.AreEqual(duration, perf.SimulationDuration);
            Assert.AreEqual(logCount, perf.FrameCount);
            Assert.AreEqual(defaultBinCount, perf.HistogramBins);
            Assert.AreEqual(defaultBinCount, perf.RealizationTimes.BinCount);
            Assert.AreEqual(logCount, perf.SolverSteps.Length);
            foreach (var histogram in perf.SolverSteps)
            {
                Assert.AreEqual(defaultBinCount, histogram.BinCount);
            }
            Assert.AreEqual(logCount, perf.StepTicks.Length);
            foreach (var histogram in perf.StepTicks)
            {
                Assert.AreEqual(defaultBinCount, histogram.BinCount);
            }
            Assert.AreEqual(logCount, perf.ReactionFirings.Length);
            foreach (var histogram in perf.ReactionFirings)
            {
                Assert.AreEqual(defaultBinCount, histogram.BinCount);
            }
        }
コード例 #2
0
        public void PerfMeasurementConfigParamsCtorFromConfig()
        {
            const int logCount      = 42;
            const int histogramBins = 20;
            const PerformanceMeasurementConfigurationParameters.LoggingFileFormat logFileFormat = PerformanceMeasurementConfigurationParameters.LoggingFileFormat.CSV;
            const string logFilenamePrefix = "logfile";
            var          configString      = BuildPerformanceMeasurementConfigurationString(enabled: true,
                                                                                            simulationDuration: TestDuration,
                                                                                            logCount: logCount,
                                                                                            histogramBins: histogramBins,
                                                                                            recordRealizationCpuTime: false,
                                                                                            recordSolverStepTicks: false,
                                                                                            recordSolverSteps: false,
                                                                                            recordReactionFirings: false,
                                                                                            logFileFormat: logFileFormat,
                                                                                            logFilenamePrefix: logFilenamePrefix,
                                                                                            compressOutput: true);
            var config       = Configuration.ConfigurationFromString(configString);
            var configParams = new PerformanceMeasurementConfigurationParameters(config, TestDuration);

            Assert.IsTrue(configParams.Enabled);
            Assert.AreEqual(TestDuration, configParams.SimulationDuration);
            Assert.AreEqual(logCount, configParams.LogCount);
            Assert.AreEqual(histogramBins, configParams.HistogramBins);
            Assert.IsFalse(configParams.RecordRealizationCpuTime);
            Assert.IsFalse(configParams.RecordSolverStepTicks);
            Assert.IsFalse(configParams.RecordSolverSteps);
            Assert.IsFalse(configParams.RecordReactionFirings);
            Assert.AreEqual(logFileFormat, configParams.LogFileFormat);
            Assert.AreEqual(logFilenamePrefix, configParams.LogFilenamePrefix);
            Assert.IsTrue(configParams.CompressOutput);
            Assert.AreEqual(logFilenamePrefix + ".csv.gz", configParams.WorkingFilename);
        }
コード例 #3
0
        public void PerfMeasurementConfigParamsBadDurationArgument()
        {
            var config = Configuration.ConfigurationFromString("{}");

            #pragma warning disable 168
            var unused = new PerformanceMeasurementConfigurationParameters(config, -2.0f);
            #pragma warning restore 168
        }
コード例 #4
0
/*
 *      [Test]
 *      public void PerfLogging()
 *      {
 *          var configuration = BuildPerformanceMeasurementConfiguration();
 *          var perf = new PerformanceMeasurements(VersionInfo.Version, VersionInfo.Description, configuration);
 *          const int realizationCount = 16;
 *
 *          perf.StartMeasurement();
 *          for (int realization = 0; realization < realizationCount; realization++)
 *          {
 *              perf.StartRealization();
 *              for (int step = 0; step < perf.FrameCount; step++)
 *              {
 *                  // Log 3/4 of the way through each interval so there is one step and one reaction
 *                  // per logging bin.
 *                  Thread.Sleep(10);
 *                  float tau = Math.Min((step+0.75f)*perf.SimulationDuration/perf.FrameCount, perf.SimulationDuration);
 *                  // Console.WriteLine("LogStep(1, {0})", tau);
 *                  perf.LogStep(1, tau);
 * //                     Assert.GreaterOrEqual(perf.SolverSteps[step].Sum(), 0, "SolverSteps should be >= 0.");
 * //                     Assert.GreaterOrEqual(perf.ReactionFirings[step].Sum(), 0, "ReactionFirings should be > 0.");
 * //                     Assert.Greater(perf.StepTicks[step].Sum(), 0, "StepTimes should be > 0.");
 *              }
 *              perf.EndRealization();
 * //                 Assert.Greater(perf.RealizationTimes.SampleCount, 0, "RealizationTimes should be > 0.");
 *          }
 *          perf.EndMeasurement();
 *
 * //             Assert.Greater(perf.TotalTimeTicks, 0.0f, "TotalTime should be > 0.");
 * //             Assert.GreaterOrEqual(perf.TotalTimeTicks, perf.RealizationTimes.Sum());
 *
 *          WriteMeasurementsToConsole(perf);
 *      }
 */

/*
 *      private static void WriteMeasurementsToConsole(PerformanceMeasurements perf)
 *      {
 *          Console.WriteLine();
 *          Console.Write("SolverSteps: ");
 *          foreach (var vector in perf.SolverSteps)
 *              foreach (var count in vector)
 *              {
 *                  Console.Write("{0} ", count);
 *              }
 *
 *          Console.WriteLine();
 *          Console.Write("ReactionFirings: ");
 *          foreach (var vector in perf.ReactionFirings)
 *              foreach (var count in vector)
 *              {
 *                  Console.Write("{0} ", count);
 *              }
 *
 *          Console.WriteLine();
 *          Console.Write("StepTimes: ");
 *          foreach (var vector in perf.StepTicks)
 *              foreach (var count in vector)
 *              {
 *                  Console.Write("{0} ", count);
 *              }
 *
 *          Console.WriteLine();
 *          Console.Write("RealizationTimes: ");
 *          foreach (var count in perf.RealizationTimes)
 *          {
 *              Console.Write("{0} ", count);
 *          }
 *
 *          Console.WriteLine();
 *          Console.WriteLine("Tick frequency: {0}", perf.TickFrequency);
 *      }
 */

/*
 *      [Test]
 *      public void PerfLoggingToo()
 *      {
 *          var configuration = BuildPerformanceMeasurementConfiguration();
 *          var perf = GeneratePerformanceMeasurements(configuration);
 *
 *          Assert.Greater(perf.TotalTimeTicks, 0.0f, "TotalTime should be > 0.");
 *
 *          Assert.GreaterOrEqual(perf.TotalTimeTicks, perf.RealizationTimes[0]);
 *          Assert.GreaterOrEqual(perf.RealizationTimes[0], perf.StepTicks[0].Sum());
 *          Assert.AreEqual(16, perf.SolverSteps[0].Sum());
 *          Assert.AreEqual(816, perf.ReactionFirings[0].Sum());
 *
 *          WriteMeasurementsToConsole(perf);
 *      }
 */

        private static PerformanceMeasurementConfigurationParameters BuildPerformanceMeasurementConfiguration(bool enabled = true, int logCount = 16, int histogramBins = 16, PerformanceMeasurementConfigurationParameters.LoggingFileFormat logFileFormat = PerformanceMeasurementConfigurationParameters.LoggingFileFormat.JSON, String logFilenamePrefix = "perflog", bool compressOutput = false, float duration = 48.0f)
        {
            var configString = BuildPerformanceMeasurementConfigurationString(enabled: enabled, logCount: logCount, histogramBins: histogramBins, logFileFormat: logFileFormat, logFilenamePrefix: logFilenamePrefix, compressOutput: compressOutput);
            var config       = Configuration.ConfigurationFromString(configString);
            var perfConfig   = new PerformanceMeasurementConfigurationParameters(config, duration);

            return(perfConfig);
        }
コード例 #5
0
ファイル: SolverBase.cs プロジェクト: JSchripsema-IDM/IDM-CMS
 private void InitializePerformanceMeasurements()
 {
     perfConfig = new PerformanceMeasurementConfigurationParameters(Configuration.CurrentConfiguration, duration);
     if (perfConfig.Enabled)
     {
         perfMeasurements = new PerformanceMeasurements(VersionInfo.Version, VersionInfo.Description, perfConfig);
     }
 }
コード例 #6
0
        public void PerfMeasurementConfigParamsBadLogCountInConfig()
        {
            string configString = BuildPerformanceMeasurementConfigurationString(logCount: -10);
            var    config       = Configuration.ConfigurationFromString(configString);

            #pragma warning disable 168
            var unused = new PerformanceMeasurementConfigurationParameters(config, TestDuration);
            #pragma warning restore 168
        }
コード例 #7
0
        public void PerfMeasurementConfigParamsCtorDefaults()
        {
            var config       = Configuration.ConfigurationFromString("{}");
            var configParams = new PerformanceMeasurementConfigurationParameters(config, TestDuration);

            Assert.IsFalse(configParams.Enabled);
            Assert.AreEqual(TestDuration, configParams.SimulationDuration);
            Assert.AreEqual(1, configParams.LogCount);
            Assert.AreEqual(16, configParams.HistogramBins);
            Assert.IsTrue(configParams.RecordRealizationCpuTime);
            Assert.IsTrue(configParams.RecordSolverStepTicks);
            Assert.IsTrue(configParams.RecordSolverSteps);
            Assert.IsTrue(configParams.RecordReactionFirings);
            Assert.AreEqual(PerformanceMeasurementConfigurationParameters.LoggingFileFormat.JSON, configParams.LogFileFormat);
            Assert.AreEqual("perflog", configParams.LogFilenamePrefix);
            Assert.IsFalse(configParams.CompressOutput);
            Assert.AreEqual("perflog.json", configParams.WorkingFilename);
        }
コード例 #8
0
        public void PerfMeasurementConfigParamsBadLogFileNameInConfig()
        {
            string tempFileNameAndPath = Path.GetTempFileName();

            try
            {
                // ReSharper disable AssignNullToNotNullAttribute
                string badPath = Path.Combine(tempFileNameAndPath, Path.GetFileName(tempFileNameAndPath)).Replace(@"\", @"\\");
                // ReSharper restore AssignNullToNotNullAttribute
                string configString = BuildPerformanceMeasurementConfigurationString(logFilenamePrefix: badPath);
                var    config       = Configuration.ConfigurationFromString(configString);
                #pragma warning disable 168
                var unused = new PerformanceMeasurementConfigurationParameters(config, TestDuration);
                #pragma warning restore 168
            }
            finally
            {
                File.Delete(tempFileNameAndPath);
            }
        }
コード例 #9
0
        private static PerformanceMeasurements GeneratePerformanceMeasurements(PerformanceMeasurementConfigurationParameters configuration, int realizationCount)
        {
            var       perf      = new PerformanceMeasurements(VersionInfo.Version, VersionInfo.Description, configuration);
            const int stepCount = 16;

            perf.StartMeasurement();
            for (int realization = 0; realization < realizationCount; realization++)
            {
                float simulationTime = 0.0f;
                perf.StartRealization();
                for (int step = 0; step < stepCount; step++)
                {
                    Thread.Sleep(10);
                    int reactionFiringsThisStep = (step + 1) * (stepCount - step);
                    simulationTime += perf.SimulationDuration * reactionFiringsThisStep / 816;
                    simulationTime  = Math.Min(simulationTime, perf.SimulationDuration);
                    Console.WriteLine("LogStep({0}, {1})", reactionFiringsThisStep, simulationTime);
                    perf.LogStep(reactionFiringsThisStep, simulationTime);
                }
                perf.EndRealization();
            }
            perf.EndMeasurement();
            return(perf);
        }