public PerformanceMeasurements(string version, string description, PerformanceMeasurementConfigurationParameters parameters)
        {
            ValidateArguments(version, description);

            FrameworkVersion     = version;
            FrameworkDescription = description;

            SimulationDuration = parameters.SimulationDuration;
            FrameCount         = parameters.LogCount;
            HistogramBins      = parameters.HistogramBins;

            RealizationTimes = new DynamicHistogram(HistogramBins);
            SolverSteps      = new DynamicHistogram[FrameCount];
            StepTicks        = new DynamicHistogram[FrameCount];
            ReactionFirings  = new DynamicHistogram[FrameCount];

            for (int iFrame = 0; iFrame < FrameCount; iFrame++)
            {
                SolverSteps[iFrame]     = new DynamicHistogram(HistogramBins);
                StepTicks[iFrame]       = new DynamicHistogram(HistogramBins);
                ReactionFirings[iFrame] = new DynamicHistogram(HistogramBins);
            }

            MeasurementTimeTicks = 0;
            _stopwatch           = new Stopwatch();
        }
예제 #2
0
 protected static void ValidateArguments(PerformanceMeasurements measurements,
                                         PerformanceMeasurementConfigurationParameters configuration)
 {
     if (measurements == null)
     {
         throw new ArgumentNullException("measurements");
     }
     if (configuration == null)
     {
         throw new ArgumentNullException("configuration");
     }
 }
예제 #3
0
        protected static TextWriter GetTextWriterForDestination(PerformanceMeasurementConfigurationParameters configuration)
        {
            TextWriter textWriter;

            if (configuration.CompressOutput)
            {
                var fs = File.Open(configuration.WorkingFilename, FileMode.OpenOrCreate, FileAccess.Write);
                var gz = new GZipStream(fs, CompressionMode.Compress);
                textWriter = new StreamWriter(gz);
            }
            else
            {
                textWriter = new StreamWriter(configuration.WorkingFilename);
            }

            return(textWriter);
        }
예제 #4
0
        public static IPerformanceDataWriter GetDataWriter(PerformanceMeasurementConfigurationParameters configuration)
        {
            IPerformanceDataWriter dataWriter;

            switch (configuration.LogFileFormat)
            {
            case PerformanceMeasurementConfigurationParameters.LoggingFileFormat.JSON:
                dataWriter = new PerformanceDataWriterJson();
                break;

            case PerformanceMeasurementConfigurationParameters.LoggingFileFormat.CSV:
                dataWriter = new PerformanceDataWriterCsv();
                break;

            default:
                throw new ArgumentException("Unknown log format in performance measurement configuration.");
            }

            return(dataWriter);
        }
예제 #5
0
 public void WritePerformanceMeasurements(PerformanceMeasurements measurements, PerformanceMeasurementConfigurationParameters configuration)
 {
     ValidateArguments(measurements, configuration);
     using (TextWriter textWriter = GetTextWriterForDestination(configuration))
     {
         SerializeMeasurementsToStream(measurements, textWriter);
     }
 }