如何使用 C# 中的示例计算速度

本文关键字:计算 速度 何使用 | 更新日期: 2023-09-27 18:35:11

每x秒我都会抓取当前时间和速度的样本

(time / number of objects created) = avg speed

我想编写一个了解如何使用样本来计算更好的平均速度的类。

起初我认为速度是双倍[],然后使用 Linq 进行平均,但由于计时器和线程不是确定性的,所以我可能会

  • 4 秒
  • 4.2 秒
  • 5.1 秒
  • 5 秒
  • 5 秒
  • 4.101秒

等。。

我认为 TimeSpan 是标记,但这只显示了行之间的增量。所以我在想也许是一个元组或键值,但使用 TimeSpan 计算平均速度并不是那么简单

有人有想法吗?

谢谢

如何使用 C# 中的示例计算速度

使用计时器/秒表的组合来控制实时:

StopWatch watch;
Timer tmr;
List<double> samples;
void initSampling()
{
    samples = new List<double>();
    watch = new Stopwatch();
    tmr = new Timer();
    tmr.Tick += tmr_Tick;
    tmr.Interval = 1000;
    tmr.Start();
    watch.Start();
}
void tmr_Tick(object sender, EventArgs e)
{
    double items = ...;//store the number of items created
    watch.Stop();
    double itemsPerSec = items / watch.ElapsedMilliseconds;
    double timePerItem = 1.0 / itemsPerSec;
    samples.Add(timePerItem);
    watch.Restart();
}

在每个"刻度"存储当前时间。根据自上次逐笔报价以来的项目数和上次逐笔报价的时间戳,您可以计算最新间隔的每秒项目数。将此值与间隔长度(例如以毫秒为单位)一起存储在列表中。

您的总体平均值(确切地说)是此列表的加权平均值。(权重为毫秒)

您是否考虑过使用 PerformanceCounter http://msdn.microsoft.com/en-us/library/system.diagnostics.performancecounter(v=vs.110).aspx?您只需计算创建的对象数量,性能计数器就会自动计算平均"速度"(我想您指的是创建对象的速率或每秒对象数)。