【问题标题】:.NET Singleton Long Running Stopwatch Instance.NET Singleton 长时间运行的秒表实例
【发布时间】:2019-03-29 23:56:29
【问题描述】:

拥有一个长时间运行的 Stopwatch 单个实例意味着什么?

例如

public static Stopwatch Stopwatch = Stopwatch.StartNew();

然后到处使用Stopwatch.ElapsedTicks

我试图避免在热路径上产生额外的 GC 压力,并且能够在没有 #IF 包装器的情况下将大部分诊断代码留在其中。

【问题讨论】:

  • 没什么特别的。无论您是否使用 Stopwatch,为 Stopwatch 提供样本的底层硬件计数器始终在滴答作响。它不像 DateTime.UtcNow 那样经过校准,因此如果您连续几天使用它,那么您可能会看到与常规时钟的差异。没有 GC 负载。

标签: c# .net performance stopwatch


【解决方案1】:

停止监视在运行时实际上并没有做任何功能,它只存储开始和结束时的值并将其转换为时间跨度,而时间跨度又可以存储最大值 10675199.02:48:05.4775807,即 10,675,199 天。

源代码非常简单,你可以在这里看到

Stopwatch Source

在单例中运行的开销可以忽略不计

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-22
    • 2013-01-05
    • 1970-01-01
    • 2019-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多