123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- using System;
- namespace UnityEditor.Performance.ProfileAnalyzer
- {
- [Serializable]
- /// <summary>
- /// Metrics related to an individual frame
- /// </summary>
- internal struct FrameTime : IComparable<FrameTime>
- {
- /// <summary>Duration in the frame in milliseconds</summary>
- public float ms;
- /// <summary>Index of which frame this time duration occured on. A zero based frame index</summary>
- public int frameIndex;
- /// <summary>Number of occurrences</summary>
- public int count;
- /// <summary>Initialise FrameTime</summary>
- /// <param name="index"> The frame index</param>
- /// <param name="msTime"> The duration of the frame in milliseconds</param>
- /// <param name="_count"> The number of occurrences</param>
- public FrameTime(int index, float msTime, int _count)
- {
- frameIndex = index;
- ms = msTime;
- count = _count;
- }
- /// <summary>Initialise from another FrameTime</summary>
- /// <param name="t"> The FrameTime to assign</param>
- public FrameTime(FrameTime t)
- {
- frameIndex = t.frameIndex;
- ms = t.ms;
- count = t.count;
- }
- /// <summary>Compare the time duration between the frames. Used for sorting in ascending order</summary>
- /// <param name="other"> The other FrameTime to compare </param>
- /// <returns>-1 if this is smaller, 0 if the same, 1 if this is larger</returns>
- public int CompareTo(FrameTime other)
- {
- if (ms == other.ms)
- {
- // secondary sort by frame index order
- return frameIndex.CompareTo(other.frameIndex);
- }
- return ms.CompareTo(other.ms);
- }
- /// <summary>Compare the time duration between two FrameTimes. Used for sorting in ascending order</summary>
- /// <param name="a"> The first FrameTime to compare </param>
- /// <param name="b"> The second FrameTime to compare </param>
- /// <returns>-1 if a is smaller, 0 if the same, 1 if a is larger</returns>
- public static int CompareMs(FrameTime a, FrameTime b)
- {
- if (a.ms == b.ms)
- {
- // secondary sort by frame index order
- return a.frameIndex.CompareTo(b.frameIndex);
- }
- return a.ms.CompareTo(b.ms);
- }
- /// <summary>Compare the instance count between two FrameTimes. Used for sorting in ascending order</summary>
- /// <param name="a"> The first FrameTime to compare </param>
- /// <param name="b"> The second FrameTime to compare </param>
- /// <returns>-1 if a is smaller, 0 if the same, 1 if a is larger</returns>
- public static int CompareCount(FrameTime a, FrameTime b)
- {
- if (a.count == b.count)
- {
- // secondary sort by frame index order
- return a.frameIndex.CompareTo(b.frameIndex);
- }
- return a.count.CompareTo(b.count);
- }
- /// <summary>Compare the time duration between two FrameTimes. Used for sorting in descending order</summary>
- /// <param name="a"> The first FrameTime to compare </param>
- /// <param name="b"> The second FrameTime to compare </param>
- /// <returns>-1 if a is larger, 0 if the same, 1 if a is smaller</returns>
- public static int CompareMsDescending(FrameTime a, FrameTime b)
- {
- if (a.ms == b.ms)
- {
- // secondary sort by frame index order
- return a.frameIndex.CompareTo(b.frameIndex);
- }
- return -a.ms.CompareTo(b.ms);
- }
- /// <summary>Compare the instance count between two FrameTimes. Used for sorting in descending order</summary>
- /// <param name="a"> The first FrameTime to compare </param>
- /// <param name="b"> The second FrameTime to compare </param>
- /// <returns>-1 if a is larger, 0 if the same, 1 if a is smaller</returns>
- public static int CompareCountDescending(FrameTime a, FrameTime b)
- {
- if (a.count == b.count)
- {
- // secondary sort by frame index order
- return a.frameIndex.CompareTo(b.frameIndex);
- }
- return -a.count.CompareTo(b.count);
- }
- }
- }
|