太原市建设北路小学网站,建设银行观澜支行网站,网站设计与建设课程,江苏建设是国企吗概述计算一段程序的耗时是我们在编程中很常见的用法#xff0c;那这节内容就通过实例的方式来演示几种常用的统计耗时的方法.方法一#xff1a;stopwatchstatic void Main(string[] args){Stopwatch sw new Stopwatch();sw.Start();Thread.Sleep(999);sw.Stop();Console.Wri…概述 计算一段程序的耗时是我们在编程中很常见的用法那这节内容就通过实例的方式来演示几种常用的统计耗时的方法.方法一stopwatchstatic void Main(string[] args){Stopwatch sw new Stopwatch();sw.Start();Thread.Sleep(999);sw.Stop();Console.WriteLine($程序耗时{sw.ElapsedMilliseconds}ms.);Console.ReadKey();}最常用的计算耗时的就是使用Stopwatch使用的时候需要引用命名空间System.Diagnostics.运行结果程序耗时1012ms.方法二DateTime.Nowstatic void Main(string[] args){//Stopwatch sw new Stopwatch();//sw.Start();//Thread.Sleep(999);//sw.Stop();//Console.WriteLine($程序耗时{sw.ElapsedMilliseconds}ms.);var start DateTime.Now;Thread.Sleep(999);var stop DateTime.Now;Console.WriteLine($程序耗时{(stop - start).TotalMilliseconds}ms.);Console.ReadKey();}运行结果程序耗时1012.2267ms.方法二ValueStopwatch用法举例如下using System;
using System.Diagnostics;
using System.Threading;namespace ConsoleApp27
{class Program{ static void Main(string[] args){//Stopwatch sw new Stopwatch();//sw.Start();//Thread.Sleep(999);//sw.Stop();//Console.WriteLine($程序耗时{sw.ElapsedMilliseconds}ms.);//var start DateTime.Now;//Thread.Sleep(999);//var stop DateTime.Now;//Console.WriteLine($程序耗时{(stop - start).TotalMilliseconds}ms.);var watch ValueStopwatch.StartNew();Thread.Sleep(999);Console.WriteLine($程序耗时{watch.GetElapsedTime().TotalMilliseconds}ms.);Console.ReadKey();}}internal struct ValueStopwatch{private static readonly double TimestampToTicks TimeSpan.TicksPerSecond / (double)Stopwatch.Frequency;private readonly long _startTimestamp;public bool IsActive _startTimestamp ! 0;private ValueStopwatch(long startTimestamp){_startTimestamp startTimestamp;}public static ValueStopwatch StartNew() new ValueStopwatch(Stopwatch.GetTimestamp());public TimeSpan GetElapsedTime(){// Start timestamp cant be zero in an initialized ValueStopwatch. It would have to be literally the first thing executed when the machine boots to be 0.// So it being 0 is a clear indication of default(ValueStopwatch)if (!IsActive){throw new InvalidOperationException(An uninitialized, or default, ValueStopwatch cannot be used to get elapsed time.);}var end Stopwatch.GetTimestamp();var timestampDelta end - _startTimestamp;var ticks (long)(TimestampToTicks * timestampDelta);return new TimeSpan(ticks);}}}运行结果程序耗时1008.0426ms.