C# 计算耗时的三种方法
Posted dotNET跨平台
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 计算耗时的三种方法相关的知识,希望对你有一定的参考价值。
概述
计算一段程序的耗时是我们在编程中很常见的用法,那这节内容就通过实例的方式来演示几种常用的统计耗时的方法.
方法一:stopwatch
static void Main(string[] args)
Stopwatch sw = new Stopwatch();
sw.Start();
Thread.Sleep(999);
sw.Stop();
Console.WriteLine($"程序耗时:sw.ElapsedMillisecondsms.");
Console.ReadKey();
最常用的计算耗时的就是使用Stopwatch,使用的时候需要引用命名空间:System.Diagnostics.
运行结果:
程序耗时:1012ms.
方法二:DateTime.Now
static void Main(string[] args)
//Stopwatch sw = new Stopwatch();
//sw.Start();
//Thread.Sleep(999);
//sw.Stop();
//Console.WriteLine($"程序耗时:sw.ElapsedMillisecondsms.");
var start = DateTime.Now;
Thread.Sleep(999);
var stop = DateTime.Now;
Console.WriteLine($"程序耗时:(stop - start).TotalMillisecondsms.");
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.ElapsedMillisecondsms.");
//var start = DateTime.Now;
//Thread.Sleep(999);
//var stop = DateTime.Now;
//Console.WriteLine($"程序耗时:(stop - start).TotalMillisecondsms.");
var watch = ValueStopwatch.StartNew();
Thread.Sleep(999);
Console.WriteLine($"程序耗时:watch.GetElapsedTime().TotalMillisecondsms.");
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 can't 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.
以上是关于C# 计算耗时的三种方法的主要内容,如果未能解决你的问题,请参考以下文章
URL转Drawable之 Android中获取网络图片的三种方法