关于基准测试:如何确定C#中的一组操作执行所需的时间?

How can I determine the amount of time a set of operations in C# require to execute?

是否有一个高精度计时器,我可以用来衡量执行时一系列操作/语句所花费的时间? 返回自纪元以来的秒数的计时器将不足,因为分辨率以秒为单位。

我认为一般的实施将是:

  • 以毫秒为单位获取开始时间。
  • 执行语句。
  • 以毫秒为单位获取结束时间。
  • 经过的时间=结束 - 开始。
  • 谢谢,

    斯科特


    秒表类适用于此。 请注意,它测量挂钟时间,而不是代码执行时间。

    1
    2
    3
    4
    5
        Stopwatch sw= new Stopwatch();
        sw.Start();
        DoTimeConsumingOperation();
        sw.Stop();
        Console.WriteLine(sw.Elapsed); // in milliseconds

    The Stopwatch measures elapsed time by
    counting timer ticks in the underlying
    timer mechanism. If the installed
    hardware and operating system support
    a high-resolution performance counter,
    then the Stopwatch class uses that
    counter to measure elapsed time.
    Otherwise, the Stopwatch class uses
    the system timer to measure elapsed
    time. Use the Frequency and
    IsHighResolution fields to determine
    the precision and resolution of the
    Stopwatch timing implementation.


    您可以使用Stopwatch对象,它具有StartStop方法。 但请注意,它会测量可能受系统负载影响的总时间,而不是净时间。 要获得净时间,您需要使用一些专门的分析工具。