C# 计算程序运行时间

2025年03月17日 23:19
有1个网友回答
网友(1):

  第一种方法利用System.DateTime.Now
  [csharp]
view
plaincopy
  static
void
SubTest()
  {
  DateTime
beforDT
=
System.DateTime.Now;
  //耗时巨大的代码
  DateTime
afterDT
=
System.DateTime.Now;
  TimeSpan
ts
=
afterDT.Subtract(beforDT);
  Console.WriteLine("DateTime总共花费{0}ms.",
ts.TotalMilliseconds);
  }
  第二种用Stopwatch类(System.Diagnostics)
  [csharp]
view
plaincopy
  static
void
SubTest()
  {
  Stopwatch
sw
=
new
Stopwatch();
  sw.Start();
  //耗时巨大的代码
  sw.Stop();
  TimeSpan
ts2
=
sw.Elapsed;
  Console.WriteLine("Stopwatch总共花费{0}ms.",
ts2.TotalMilliseconds);
  }
  第三种用API实现:
  [csharp]
view
plaincopy
  [System.Runtime.InteropServices.DllImport("Kernel32.dll")]
  static
extern
bool
QueryPerformanceCounter(ref
long
count);
  [System.Runtime.InteropServices.DllImport("Kernel32.dll")]
  static
extern
bool
QueryPerformanceFrequency(ref
long
count);
  static
void
SubTest()
  {
  long
count
=
0;
  long
count1
=
0;
  long
freq
=
0;
  double
result
=
0;
  QueryPerformanceFrequency(ref
freq);
  QueryPerformanceCounter(ref
count);
  //耗时巨大的代码
  QueryPerformanceCounter(ref
count1);
  count
=
count1
-
count;
  result
=
(double)(count)
/
(double)freq;
  Console.WriteLine("QueryPerformanceCounter耗时:
{0}
秒",
result);
  }