📜  如何计算 C# 中的代码执行时间?

📅  最后修改于: 2022-05-13 01:54:49.363000             🧑  作者: Mango

如何计算 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