1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- using System;
- using System.Collections.Generic;
- using System.Runtime.Serialization;
- using Unity.PerformanceTesting.Exceptions;
- using UnityEngine.Profiling;
-
- namespace Unity.PerformanceTesting
- {
- /// <summary>
- /// Represents a performance test sample group.
- /// </summary>
- [Serializable]
- public class SampleGroup : IDeserializationCallback
- {
- /// <summary>
- /// Name of the sample group.
- /// </summary>
- public string Name;
- /// <summary>
- /// Measurement unit.
- /// </summary>
- public SampleUnit Unit;
- /// <summary>
- /// Whether the measurement is inverted and increase is positive.
- /// </summary>
- public bool IncreaseIsBetter;
- /// <summary>
- /// List of samples.
- /// </summary>
- public List<double> Samples = new List<double>();
- /// <summary>
- /// Minimum value of samples.
- /// </summary>
- public double Min;
- /// <summary>
- /// Maximum value of samples.
- /// </summary>
- public double Max;
- /// <summary>
- /// Medina value of samples.
- /// </summary>
- public double Median;
- /// <summary>
- /// Average value of samples.
- /// </summary>
- public double Average;
- /// <summary>
- /// Standard deviation of samples.
- /// </summary>
- public double StandardDeviation;
- /// <summary>
- /// Sum of samples.
- /// </summary>
- public double Sum;
-
- /// <summary>
- /// Creates a new sample group with given parameters.
- /// </summary>
- /// <param name="name">Name of the sample group.</param>
- /// <param name="unit">Unit of measurement.</param>
- /// <param name="increaseIsBetter">Whether the measurement is inverted and increase is positive.</param>
- /// <exception cref="PerformanceTestException">Exception can be thrown if empty or null name is provided.</exception>
- public SampleGroup(string name, SampleUnit unit = SampleUnit.Millisecond, bool increaseIsBetter = false)
- {
- Name = name;
- Unit = unit;
- IncreaseIsBetter = increaseIsBetter;
-
- if (string.IsNullOrEmpty(name))
- {
- throw new PerformanceTestException("Sample group name is empty. Please assign a valid name.");
- }
- }
-
- internal Recorder Recorder;
-
- /// <summary>
- /// Gets the profiler recorder object.
- /// </summary>
- /// <returns>Profiler recorder.</returns>
- public Recorder GetRecorder()
- {
- return Recorder ?? (Recorder = Recorder.Get(Name));
- }
-
- /// <summary>
- /// Validates the deserialized object.
- /// </summary>
- /// <param name="sender">The object that initiated the deserialization process.</param>
- public void OnDeserialization(object sender)
- {
- if (string.IsNullOrEmpty(Name))
- {
- throw new PerformanceTestException("Sample group name is empty. Please assign a valid name.");
- }
- }
- }
- }
|