chr
2026-04-05 fe750b791d5b517cc4e9bc8e99a9a75139a0cfba
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
using System;
 
namespace OpenTap
{
    class TimeSpanAverager
    {
        int averageCnt = 0;
        long[] weights = new long[10];
        int averageIndex = 0;
 
        public void PushTimeSpan(TimeSpan ts)
        {
            var indexOfValue = averageIndex = (averageIndex + 1) % weights.Length;
            weights[indexOfValue] = ts.Ticks;
            averageCnt = Math.Min(weights.Length, averageCnt + 1);
        }
 
        static TimeSpan defaultSpan = TimeSpan.FromSeconds(0.1);
 
        public TimeSpan GetAverage()
        {
            if (averageCnt == 0) return defaultSpan;
            long sum = 0;
            for(int i = 0; i < averageCnt; i++)
            {
                sum += weights[i];
            }
 
            var avg = TimeSpan.FromTicks(sum / averageCnt);
            return avg;
        }
    }
}