< Summary

Class:DCL.FPSDisplay.LinealBufferHiccupCounter
Assembly:PerformanceController
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/WorldRuntime/Debugging/Performance/LinealBufferHiccupCounter.cs
Covered lines:32
Uncovered lines:0
Coverable lines:32
Total lines:78
Line coverage:100% (32 of 32)
Covered branches:0
Total branches:0
Covered methods:15
Total methods:15
Method coverage:100% (15 of 15)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
LinealBufferHiccupCounter(...)0%110100%
AddDeltaTime(...)0%330100%
IsHiccup(...)0%110100%
LinealBufferFPSCounter(...)0%110100%
AddDeltaTime(...)0%110100%
AdjustHeadPosition(...)0%220100%
CircularIncrement(...)0%220100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/WorldRuntime/Debugging/Performance/LinealBufferHiccupCounter.cs

#LineLine coverage
 1namespace DCL.FPSDisplay
 2{
 3    public class LinealBufferHiccupCounter
 4    {
 5        private readonly LinealBufferFPSCounter counter;
 6
 95417        public int HiccupsCountInBuffer { get; private set; }
 95408        public float HiccupsSum { get; private set; }
 144059        public float TotalSeconds { get; private set; }
 10
 311        public LinealBufferHiccupCounter(int bufferSize)
 12        {
 313            counter = new LinealBufferFPSCounter(bufferSize);
 314        }
 15
 16        public void AddDeltaTime(float valueInSeconds)
 17        {
 360118            if (IsHiccup(counter.Values[counter.Tail]))
 19            {
 143620                HiccupsCountInBuffer -= 1;
 143621                HiccupsSum -= counter.Values[counter.Tail];
 22            }
 23
 360124            if (IsHiccup(valueInSeconds))
 25            {
 333326                HiccupsCountInBuffer += 1;
 333327                HiccupsSum += valueInSeconds;
 28            }
 29
 360130            TotalSeconds -= counter.Values[counter.Tail];
 360131            TotalSeconds += valueInSeconds;
 32
 360133            counter.AddDeltaTime(valueInSeconds);
 360134        }
 35
 36        public static bool IsHiccup(float value) =>
 720237            value > FPSEvaluation.HICCUP_THRESHOLD_IN_SECONDS;
 38
 39        private class LinealBufferFPSCounter
 40        {
 41            public readonly float[] Values;
 42            private readonly int maxBufferSize;
 43
 44            private int head;
 45            private float secondsBetweenHeadAndTail;
 46
 1944147            public int Tail { get; private set; }
 48
 349            public LinealBufferFPSCounter(int bufferSize)
 50            {
 351                Values = new float[bufferSize];
 352                maxBufferSize = bufferSize;
 353            }
 54
 55            public void AddDeltaTime(float valueInSeconds)
 56            {
 360157                Values[Tail] = valueInSeconds;
 58
 360159                Tail = CircularIncrement(Tail);
 60
 360161                AdjustHeadPosition(valueInSeconds);
 360162            }
 63
 64            private void AdjustHeadPosition(float valueInSeconds)
 65            {
 360166                secondsBetweenHeadAndTail += valueInSeconds;
 710367                while (secondsBetweenHeadAndTail > 1)
 68                {
 350269                    secondsBetweenHeadAndTail -= Values[head];
 350270                    head = CircularIncrement(head);
 71                }
 360172            }
 73
 74            private int CircularIncrement(int id) =>
 710375                id == maxBufferSize - 1 ? 0 : id + 1;
 76        }
 77    }
 78}