如何计算 C# 中的代码执行时间?
任务的执行时间定义为系统执行该任务所花费的时间。程序的执行时间等于其语句执行时间的总和。有多种方法可以计算 C# 中程序的执行时间。在本文中,我们将看到在 C# 中测量执行时间的三种方法。
方法一:使用 StartNew() 和 Stop() 方法
我们可以使用 StartNew() 和 Stop() 方法计算代码的执行时间。 StartNew() 方法属于 Stopwatch 类,它基本上用于初始化一个新的 Stopwatch 实例。在内部,它将经过时间属性标记为零,然后开始测量经过时间。这个方法和先调用 Stopwatch 构造函数,然后在新实例上调用 class 几乎是一样的。
句法:
public static StartNew ();
Stop() 方法也属于 Stopwatch 类,它用于将当前测量时间停止一段时间。首先,我们可以调用 Stopwatch 中的 StartNew() 方法来开始经过的时间,最后,我们可以调用该方法来结束当前的测量时间间隔。最终,总执行时间是在 elapsed 属性的帮助下计算出来的。每当 Stopwatch 实例测量多个间隔时,此方法类似于暂停经过时间测量。与 StartNew() 方法一样,此方法也在 System.Diagnostics 命名空间下定义。
句法:
public void Stop ();
例子:
C#
// C# program to find the execution time of the code
using System;
using System.Diagnostics;
class GFG{
static public void Main()
{
// Starting the Stopwatch
var watch = Stopwatch.StartNew();
// Iterating using for loop
for(int i = 0; i < 5; i++)
{
// Print on console
Console.WriteLine("GeeksforGeeks");
}
// Stop the Stopwatch
watch.Stop();
// Print the execution time in milliseconds
// by using the property elapsed milliseconds
Console.WriteLine(
$"The Execution time of the program is {watch.ElapsedMilliseconds}ms");
}
}
C#
// C# program to find the execution time of the code
using System;
using System.Diagnostics;
class GFG{
static public void Main()
{
// Mark the start before the loop
var start = Stopwatch.GetTimestamp();
// Iterating using for loop
for(int i = 0; i < 5; i++)
{
// Print on console
Console.WriteLine("GeeksforGeeks");
}
// Mark the end after the loop
var end = Stopwatch.GetTimestamp();
// Print the difference
Console.WriteLine("Elapsed Time is {0} ticks", (end - start));
}
}
C#
// C# program to find the execution time of the code
using System;
class GFG{
static public void Main()
{
// Marking the start time
DateTime start = DateTime.Now;
// Iterating using for loop
for(int i = 0 ; i < 5 ; i++)
{
Console.WriteLine("GeeksforGeeks");
}
// Marking the end time
DateTime end = DateTime.Now;
// Total Duration
TimeSpan ts = (end - start);
// Print the execution time in milliseconds
Console.WriteLine("The execution time of the program is {0} ms",
ts.TotalMilliseconds);
}
}
GeeksforGeeks
GeeksforGeeks
GeeksforGeeks
GeeksforGeeks
GeeksforGeeks
The Execution time of the program is 37ms
方法 2:使用 GetTimestamp() 方法
我们还可以使用 GetTimestamp() 方法找到代码的执行时间。此方法对于在计时器机制中查找持续时间的滴答数非常有帮助。我们可以使用 Stopwatch 类的高分辨率性能计数器来获取该计数器的当前值。我们还可以使用系统计时器来获取 DateTime.UtcNow 实例的当前 DateTime.Ticks 属性。它的返回类型是一个长整数,表示计时器机制的滴答计数器值。
句法:
public static long GetTimestamp ();
例子:
C#
// C# program to find the execution time of the code
using System;
using System.Diagnostics;
class GFG{
static public void Main()
{
// Mark the start before the loop
var start = Stopwatch.GetTimestamp();
// Iterating using for loop
for(int i = 0; i < 5; i++)
{
// Print on console
Console.WriteLine("GeeksforGeeks");
}
// Mark the end after the loop
var end = Stopwatch.GetTimestamp();
// Print the difference
Console.WriteLine("Elapsed Time is {0} ticks", (end - start));
}
}
GeeksforGeeks
GeeksforGeeks
GeeksforGeeks
GeeksforGeeks
GeeksforGeeks
Elapsed Time is 343095 ticks
方法 3:使用 DateTime.Now 属性
我们可以使用 DateTime.Now 属性计算代码的执行时间。此属性对于获取最初在设备上标有当前日期和时间(作为本地时间)的 DateTime 对象非常有帮助。该方法的属性值为 DateTime,它是一个对象,其值为当前本地数据和时间。 Now 属性返回一个 DateTime 值,该值描述了设备或计算机上的当前日期和时间。这是在 System 命名空间下定义的。
句法:
public static DateTime Now { get; }
例子:
C#
// C# program to find the execution time of the code
using System;
class GFG{
static public void Main()
{
// Marking the start time
DateTime start = DateTime.Now;
// Iterating using for loop
for(int i = 0 ; i < 5 ; i++)
{
Console.WriteLine("GeeksforGeeks");
}
// Marking the end time
DateTime end = DateTime.Now;
// Total Duration
TimeSpan ts = (end - start);
// Print the execution time in milliseconds
Console.WriteLine("The execution time of the program is {0} ms",
ts.TotalMilliseconds);
}
}
输出:
GeeksforGeeks
GeeksforGeeks
GeeksforGeeks
GeeksforGeeks
GeeksforGeeks
The execution time of the program is 176.095 ms