【问题标题】:What are timer ticks, the unit used by Stopwatch.ElapsedTicks什么是计时器滴答,Stopwatch.ElapsedTicks 使用的单位
【发布时间】:2011-08-13 05:19:02
【问题描述】:

我曾经认为

  • Stopwatch.ElapsedTicks 等于
  • Stopwatch.Elapsed.Ticks

但事实并非如此。后者是 100 纳秒的周期数,而前者使用一个名为 timer ticks 的神秘单位。我想知道这些是什么,为什么它们与通常的度量单位不同?

【问题讨论】:

    标签: .net timespan stopwatch


    【解决方案1】:

    也许查看控制台输出会有所帮助...

    LinkedList 500 插入/删除操作 ElapsedTicks : 45871
    LinkedList 500 插入/删除操作 Elapsed.ticks : 141266
    LinkedList 500 插入/删除操作毫秒:14.1266
    列出 500 个插入/删除操作 ElapsedTicks:1235121
    列出 500 个插入/删除操作 Elapsed.ticks : 3803744
    列出 500 个插入/删除操作 milisec: 380.3744

    (据此确认 Elapsed.Ticks 的测量时间为 100 纳秒)

    【讨论】:

      【解决方案2】:

      Stopwatch.ElapsedTicks 以秒表的形式测量“滴答”,即 1 秒/Stopwatch.Frequency 的时间长度。

      在内部,这是基于Windows High Performance Counter Support(如果您的系统支持,这几乎总是正确的)。本机调用是QueryPerformanceFrequency,其长度会根据您的硬件支持而有所不同。

      【讨论】:

        【解决方案3】:

        来自the docs

        秒表通过计算底层计时器机制中的计时器滴答来测量经过的时间。如果安装的硬件和操作系统支持高分辨率性能计数器,则 Stopwatch 类使用该计数器来测量经过的时间。否则, Stopwatch 类使用系统计时器来测量经过的时间。使用FrequencyIsHighResolution 字段来确定秒表计时实现的精度和分辨率。

        是的,“滴答声”被重载表示两种不同的东西是一种痛苦:(

        我认为这基本上是因为Stopwatch 提供了一个非常“原始”的性能计数器视图,对于“tick”的含义,它可以有不同的实现。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多