You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.9 KiB
C#
65 lines
1.9 KiB
C#
1 year ago
|
using System;
|
||
|
using System.Collections.Generic;
|
||
|
using System.Runtime.CompilerServices;
|
||
|
|
||
|
namespace UnityEditor.Performance.ProfileAnalyzer
|
||
|
{
|
||
|
[Serializable]
|
||
|
internal class ThreadData
|
||
|
{
|
||
|
public string threadNameWithIndex;
|
||
|
public int threadGroupIndex;
|
||
|
public string threadGroupName;
|
||
|
public int threadsInGroup;
|
||
|
public List<ThreadFrameTime> frames = new List<ThreadFrameTime>();
|
||
|
|
||
|
public float msMedian;
|
||
|
public float msLowerQuartile;
|
||
|
public float msUpperQuartile;
|
||
|
public float msMin;
|
||
|
public float msMax;
|
||
|
|
||
|
public int medianFrameIndex;
|
||
|
public int minFrameIndex;
|
||
|
public int maxFrameIndex;
|
||
|
|
||
|
public ThreadData(string _threadName)
|
||
|
{
|
||
|
threadNameWithIndex = _threadName;
|
||
|
|
||
|
var info = threadNameWithIndex.Split(':');
|
||
|
threadGroupIndex = int.Parse(info[0]);
|
||
|
threadGroupName = info[1];
|
||
|
threadsInGroup = 1;
|
||
|
|
||
|
msMedian = 0.0f;
|
||
|
msLowerQuartile = 0.0f;
|
||
|
msUpperQuartile = 0.0f;
|
||
|
msMin = 0.0f;
|
||
|
msMax = 0.0f;
|
||
|
|
||
|
medianFrameIndex = -1;
|
||
|
minFrameIndex = -1;
|
||
|
maxFrameIndex = -1;
|
||
|
}
|
||
|
|
||
|
struct ThreadFrameTimeFrameComparer : IComparer<ThreadFrameTime>
|
||
|
{
|
||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||
|
public int Compare(ThreadFrameTime x, ThreadFrameTime y)
|
||
|
{
|
||
|
if (x.frameIndex == y.frameIndex)
|
||
|
return 0;
|
||
|
return x.frameIndex > y.frameIndex ? 1 : -1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||
|
public ThreadFrameTime? GetFrame(int frameIndex)
|
||
|
{
|
||
|
var index = frames.BinarySearch(new ThreadFrameTime(frameIndex, 0, 0), new ThreadFrameTimeFrameComparer());
|
||
|
return index >= 0 ? (ThreadFrameTime?)frames[index] : null;
|
||
|
}
|
||
|
}
|
||
|
}
|