C# 发布应用程序中秒表的替代品

C# 发布应用程序中秒表的替代品,c#,stopwatch,C#,Stopwatch,我有一个C#服务器应用程序 我从我的客户那里收到JPEG jpeg是用我在服务器端检索到的时间戳编码的 我想确定网络延迟 因此,由于我不能依赖PC上的时钟,因为它们可能不同步(即使使用UTCDateTime),我必须依赖我所知道的 我可以确定的是传入jpeg的时间戳和上一个jpeg的时间戳 因此,我的想法是使用stopwatch(system.diagnostics)对象来计算帧之间的毫秒数,然后计算延迟 然而,我发现: 性能。让我们讨论一下实例化秒表对性能的影响。秒表类比许多操作都慢。这适用于

我有一个C#服务器应用程序

我从我的客户那里收到JPEG

jpeg是用我在服务器端检索到的时间戳编码的

我想确定网络延迟

因此,由于我不能依赖PC上的时钟,因为它们可能不同步(即使使用UTCDateTime),我必须依赖我所知道的

我可以确定的是传入jpeg的时间戳和上一个jpeg的时间戳

因此,我的想法是使用stopwatch(system.diagnostics)对象来计算帧之间的毫秒数,然后计算延迟

然而,我发现:

性能。让我们讨论一下实例化秒表对性能的影响。秒表类比许多操作都慢。这适用于在应用程序的整个生命周期内使用秒表进行例行监视的情况。 结果: 使用秒表比.NET Framework中的简单操作更昂贵。 以及: 因此,秒表本身可能成为性能问题。我们不应该在紧密循环的生产代码中使用它。

因此,这似乎排除了我的可能性,因为我使用的是一个紧密循环,并且JPEG的数量可能高达每秒20个(取决于连接的强度)

那么,在我的场景中还有什么可以使用的吗


谢谢

您是有具体问题还是一般性问题?粗体文本来自哪里?秒表课程并不慢,因为它什么都不做。它在启动时存储高性能计数器值,并在调用Stop时将其与当前计数器值进行比较,至于紧循环和JPEG,这些东西比阅读一个文件要花费几个数量级的时间counter@Fabjan这与性能测量有什么关系?@AndrewSimpson说,link讨论的是紧密循环——以纳秒为单位运行的循环,执行简单的CPU操作,比如加法。但在你的情况下,你执行的操作慢了十亿倍。@AndrewSimpson我并没有提出任何建议,只是表达了一个不太好的想法。。。这里最好使用标准的.NET网络相关性能计数器,因为它们是专门为此而设计的。请参阅DateTime.UtcNow比StopWatch快,但精度也较低,StopWatch将测量经过的时间,而UtcNow将返回0。但是我同意你的评论,你不会每50毫秒就制作一块新的秒表数千次,所以它不会产生太大的影响。你有什么具体的问题吗?或者你一般都会问吗?粗体文本来自哪里?秒表课程并不慢,因为它什么都不做。它在启动时存储高性能计数器值,并在调用Stop时将其与当前计数器值进行比较,至于紧循环和JPEG,这些东西比阅读一个文件要花费几个数量级的时间counter@Fabjan这与性能测量有什么关系?@AndrewSimpson说,link讨论的是紧密循环——以纳秒为单位运行的循环,执行简单的CPU操作,比如加法。但在你的情况下,你执行的操作慢了十亿倍。@AndrewSimpson我并没有提出任何建议,只是表达了一个不太好的想法。。。这里最好使用标准的.NET网络相关性能计数器,因为它们是专门为此而设计的。请参阅DateTime.UtcNow比StopWatch快,但精度也较低,StopWatch将测量经过的时间,而UtcNow将返回0。但是我同意你的评论,你不会每50毫秒就制作一个新的秒表数千次,所以它不会有太大的影响。