예제 #1
0
        public void Combine_calculations_cross_verification()
        {
            // Assign
            TimeSpan[] samples1 =
            {
                TimeSpan.FromMilliseconds(310),
                TimeSpan.FromMilliseconds(300),
                TimeSpan.FromMilliseconds(350),
                TimeSpan.FromMilliseconds(330),
            };

            TimeSpan[] samples2 =
            {
                TimeSpan.FromMilliseconds(315),
                TimeSpan.FromMilliseconds(290),
                TimeSpan.FromMilliseconds(325),
            };

            var emptyStats = new TimeStats();
            var stats1 = CreateStats(samples1);
            var stats2 = CreateStats(samples2);
            var common = CreateStats(samples1.Concat(samples2).ToArray());

            // Act
            var combined = emptyStats + stats1 + stats2 + emptyStats;

            // Assert
            combined.ShouldBeEquivalentTo(common);
        }
예제 #2
0
 public void Combine(TimeStats that)
 {
     if (that.SamplesCount == 0)
     {
         return;
     }
     if (this.SamplesCount == 0)
     {
         this.Max          = that.Max;
         this.Min          = that.Min;
         this.Avg          = that.Avg;
         this.SamplesCount = that.SamplesCount;
     }
     else
     {
         var totalSamplesCount = this.SamplesCount + that.SamplesCount;
         this.Max = TimeSpan.FromTicks(Math.Max(this.Max.Ticks, that.Max.Ticks));
         this.Min = TimeSpan.FromTicks(Math.Min(this.Min.Ticks, that.Min.Ticks));
         this.Avg = TimeSpan.FromTicks((long)
                                       (this.Avg.Ticks * ((double)this.SamplesCount / totalSamplesCount)
                                        + that.Avg.Ticks * ((double)that.SamplesCount / totalSamplesCount))
                                       );
         this.SamplesCount = totalSamplesCount;
     }
 }
예제 #3
0
        public void Combine_calculations_cross_verification()
        {
            // Assign
            TimeSpan[] samples1 =
            {
                TimeSpan.FromMilliseconds(310),
                TimeSpan.FromMilliseconds(300),
                TimeSpan.FromMilliseconds(350),
                TimeSpan.FromMilliseconds(330),
            };

            TimeSpan[] samples2 =
            {
                TimeSpan.FromMilliseconds(315),
                TimeSpan.FromMilliseconds(290),
                TimeSpan.FromMilliseconds(325),
            };

            var emptyStats = new TimeStats();
            var stats1     = CreateStats(samples1);
            var stats2     = CreateStats(samples2);
            var common     = CreateStats(samples1.Concat(samples2).ToArray());

            // Act
            var combined = emptyStats + stats1 + stats2 + emptyStats;

            // Assert
            combined.ShouldBeEquivalentTo(common);
        }
예제 #4
0
 public void Combine(TimeStats that)
 {
     if (that.SamplesCount == 0)
     {
         return;
     }
     if (this.SamplesCount == 0)
     {
         this.Max = that.Max;
         this.Min = that.Min;
         this.Avg = that.Avg;
         this.SamplesCount = that.SamplesCount;
     }
     else
     {
         var totalSamplesCount = this.SamplesCount + that.SamplesCount;
         this.Max = TimeSpan.FromTicks(Math.Max(this.Max.Ticks, that.Max.Ticks));
         this.Min = TimeSpan.FromTicks(Math.Min(this.Min.Ticks, that.Min.Ticks));
         this.Avg = TimeSpan.FromTicks((long)
                (this.Avg.Ticks * ((double)this.SamplesCount / totalSamplesCount)
               + that.Avg.Ticks * ((double)that.SamplesCount / totalSamplesCount))
             );
         this.SamplesCount = totalSamplesCount;
     }
 }
예제 #5
0
 public static TimeStats operator +(TimeStats stats1, TimeStats stats2)
 {
     var combinedStats = new TimeStats();
     combinedStats.Combine(stats1);
     combinedStats.Combine(stats2);
     return combinedStats;
 }
예제 #6
0
        public static TimeStats operator+(TimeStats stats1, TimeStats stats2)
        {
            var combinedStats = new TimeStats();

            combinedStats.Combine(stats1);
            combinedStats.Combine(stats2);
            return(combinedStats);
        }
예제 #7
0
 static TimeStats CreateStats(params TimeSpan[] samples)
 {
     var stats = new TimeStats();
     foreach (var sample in samples)
     {
         stats.AddSample(sample);
     }
     return stats;
 }
예제 #8
0
        static TimeStats CreateStats(params TimeSpan[] samples)
        {
            var stats = new TimeStats();

            foreach (var sample in samples)
            {
                stats.AddSample(sample);
            }
            return(stats);
        }