C#计算一段程序运行时间的多种方法总结

 更新时间:2025年10月22日 10:04:20   作者:xzjxylophone  
这篇文章主要为大家详细介绍了C#计算一段程序运行时间的多种方法,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下

直接代码:

第一种方法利用System.DateTime.Now

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)

static void SubTest()
{
	Stopwatch sw = new Stopwatch();
	sw.Start();
  
	//耗时巨大的代码
	
	sw.Stop();
	TimeSpan ts2 = sw.Elapsed;
	Console.WriteLine("Stopwatch总共花费{0}ms.", ts2.TotalMilliseconds);
}

第三种用API实现: 

[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);
}

方法补充

C#中获取程序执行时间的三种方法

1. 使用DateTime类

你可以在程序开始执行前获取当前时间,然后在程序结束时再次获取当前时间,通过这两个时间点计算程序执行时间。

using System;
 
class Program
{
    static void Main()
    {
        DateTime startTime = DateTime.Now;
 
        // 执行你的代码
        for (int i = 0; i < 1000000; i++)
        {
            // 示例:一个简单的循环
        }
 
        DateTime endTime = DateTime.Now;
        TimeSpan executionTime = endTime - startTime;
 
        Console.WriteLine("程序执行时间: " + executionTime.TotalMilliseconds + " 毫秒");
    }
}

2. 使用Stopwatch类

System.Diagnostics.Stopwatch类是测量时间的一种更精确的方法,特别是对于需要高精度计时的场景。

using System;
using System.Diagnostics;
 
class Program
{
    static void Main()
    {
        Stopwatch stopwatch = new Stopwatch();
        stopwatch.Start();
 
        // 执行你的代码
        for (int i = 0; i < 1000000; i++)
        {
            // 示例:一个简单的循环
        }
 
        stopwatch.Stop();
        Console.WriteLine("程序执行时间: " + stopwatch.ElapsedMilliseconds + " 毫秒");
    }
}

3. 使用Environment.TickCount或Environment.TickCount64(对于64位系统)

这种方法不如Stopwatch精确,但对于简单的性能测试或快速获取时间差也是可行的。

using System;
 
class Program
{
    static void Main()
    {
        int startTime = Environment.TickCount; // 或使用Environment.TickCount64对于64位系统以避免溢出
 
        // 执行你的代码
        for (int i = 0; i < 1000000; i++)
        {
            // 示例:一个简单的循环
        }
 
        int endTime = Environment.TickCount; // 或使用Environment.TickCount64对于64位系统以避免溢出
        int executionTime = endTime - startTime; // 注意:这将返回以毫秒为单位的整数,但不直接提供TimeSpan对象。
 
        Console.WriteLine("程序执行时间: " + executionTime + " 毫秒");
    }
}

到此这篇关于C#计算一段程序运行时间的多种方法总结的文章就介绍到这了,更多相关C#计算程序运行时间内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在winform下实现左右布局多窗口界面的方法

    在winform下实现左右布局多窗口界面的方法

    在web页面上我们可以通过frameset,iframe嵌套框架很容易实现各种导航+内容的布局界面,而在winform、WPF中实现其实也很容易,通过本文给大家介绍在winform下实现左右布局多窗口界面的方法,本文介绍的非常详细,对winform布局相关知识感兴趣的朋友一起学习吧
    2016-02-02
  • C# 创建、部署和调用WebService简单示例

    C# 创建、部署和调用WebService简单示例

    这篇文章主要为大家详细介绍了C# 创建、部署和调用WebService的简单示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • C#使用SQLDMO操作数据库的方法

    C#使用SQLDMO操作数据库的方法

    这篇文章主要介绍了C#使用SQLDMO操作数据库的方法,实例分析了基于SQLDMO.dll动态链接库操作数据库的相关技巧,需要的朋友可以参考下
    2015-06-06
  • WPF如何绘制光滑连续贝塞尔曲线示例代码

    WPF如何绘制光滑连续贝塞尔曲线示例代码

    贝塞尔曲线,又称贝兹曲线或贝济埃曲线,一般的矢量图形软件通过它来精确画出曲线,下面这篇文章主要给大家介绍了关于WPF如何绘制光滑连续贝塞尔曲线的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
    2018-04-04
  • c#中(&&,||)与(&,|)的区别详解

    c#中(&&,||)与(&,|)的区别详解

    这篇文章主要介绍了c#中(&&,||)与(&,|)的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Unity中3DText显示模糊不清的解决方案

    Unity中3DText显示模糊不清的解决方案

    这篇文章主要介绍了Unity中3DText显示模糊不清的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • C#操作目录与文件的方法步骤

    C#操作目录与文件的方法步骤

    本篇文章是对C#操作目录与文件的方法步骤进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • .NET实现父窗体关闭而不影响子窗体的方法

    .NET实现父窗体关闭而不影响子窗体的方法

    这篇文章主要介绍了.NET实现父窗体关闭而不影响子窗体的方法,很实用的功能,需要的朋友可以参考下
    2014-08-08
  • Unity扩展Hierachry的右键菜单

    Unity扩展Hierachry的右键菜单

    这篇文章主要为大家详细介绍了Unity扩展Hierachry的右键菜单,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • C#的正则表达式Regex类使用简明教程

    C#的正则表达式Regex类使用简明教程

    这篇文章主要介绍了C#的正则表达式Regex类使用简明教程,分别讲解了如何匹配、如何获取匹配次数、如何获取匹配内容及捕获的方法,需要的朋友可以参考下
    2014-08-08

最新评论