-
Notifications
You must be signed in to change notification settings - Fork 0
/
PerfMonitorData.cs
45 lines (36 loc) · 1.31 KB
/
PerfMonitorData.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
using System;
using System.Collections.Generic;
namespace PerfMonitor
{
[Serializable]
public class PerfMonitorData
{
public int executionCount;
public double totalExecutionTime;
public double AverageExecutionTime => executionCount > 0 ? totalExecutionTime / executionCount : 0;
public double previousAverageExecutionTime;
public List<double> lastExecutionTimes = new();
public PerfMonitorData(string methodName)
{
executionCount = 0;
totalExecutionTime = 0;
previousAverageExecutionTime = 0;
}
public void AddExecutionTime(double time)
{
executionCount++;
totalExecutionTime += time;
lastExecutionTimes.Add(time);
if (lastExecutionTimes.Count > 10)
{
lastExecutionTimes.RemoveAt(0);
}
}
public double GetPerformanceChangePercentage()
{
if (previousAverageExecutionTime == 0)
return 0;
return ((AverageExecutionTime - previousAverageExecutionTime) / previousAverageExecutionTime) * 100;
}
}
}