99 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| 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.");	
 | |
|             }	
 | |
|         }
 | |
|     }
 | |
| }
 |