none
如何统计一段代码的执行时间? RRS feed

  • 问题

  • 如题。

    不要这种方法:

    DateTime t1, t2;
    TimeSpan t3;
    t1 = DateTime.Now;
    // Code
    t2 = DateTime.Now;
    t3 = t2 - t1;
    

    因为如果我在代码执行期间修改了系统时间,结果就会不准确。

    那么该如何解决?


    EFanZh
    2010年10月5日 5:44

答案

  • 你好

    或者你可以考慮使System.Diagnostics.Stopwatch

    E.G.

       System.Diagnostics.Stopwatch s = new System.Diagnostics.Stopwatch();
             s.Start();
            //Your Code
                s.Stop();
               MessageBox.Show(s.Elapsed.Seconds.ToString());

    Please correct me if my concept is wrong


    Chi
    • 已标记为答案 EFanZh 2010年10月8日 10:19
    2010年10月5日 7:33
    版主

全部回复

  • 你好

    或者你可以考慮使System.Diagnostics.Stopwatch

    E.G.

       System.Diagnostics.Stopwatch s = new System.Diagnostics.Stopwatch();
             s.Start();
            //Your Code
                s.Stop();
               MessageBox.Show(s.Elapsed.Seconds.ToString());

    Please correct me if my concept is wrong


    Chi
    • 已标记为答案 EFanZh 2010年10月8日 10:19
    2010年10月5日 7:33
    版主
  • 请避免使用使用 DateTime 和 TimeSpan 类型类判断某个操作的执行时间。原因是,DateTime 的精度只能达到 1/64 秒,还有其正确性也不是 100% 符合其精度。在评估某些操作的时间时,特别是操作时间小于 100 毫秒的时候,DateTime 可能无法精确计算间隔时间。请总是考虑用 Stopwatch 来进行时间间隔评估。99% 的开发人员不知道 DateTime 的精度和正确性问题。

    关于 DateTime 精确度和正确性的问题,请参考 http://blogs.msdn.com/b/ericlippert/archive/2010/04/08/precision-and-accuracy-of-datetime.aspx

     


    Mark Zhou
    2010年10月5日 10:37