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

本文详细介绍并实测了三种在C#中测量程序运行时间的方法:使用DateTime类、Stopwatch类以及通过Kernel32.dll API。每种方法均附带代码示例,帮助开发者根据需求选择最适合的计时方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

亲测有效~

直接代码:
第一种方法利用System.DateTime.Now

 1         public static void SubTest()
 2         {
 3             DateTime beforeDT = System.DateTime.Now;
 4             int[] a = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };
 5             //Shuffle(a) is the function you want to test.
 6             Shuffle(a);
 7             DateTime afterDT = System.DateTime.Now;
 8             TimeSpan ts = afterDT.Subtract(beforeDT);
 9             Console.WriteLine("DateTime costed for Shuffle function is: {0}ms",ts.TotalMilliseconds);
10         }

 

第二种用Stopwatch类(System.Diagnostics)

public static void SubTest() {
    Stopwatch sw = new Stopwatch();
    sw.Start();
    //Shuffle(a) is the function you want to test.
    int[] a = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };
    Shuffle(a);
    sw.Stop();
    TimeSpan ts = sw.Elapsed;
    Console.WriteLine("DateTime costed for Shuffle function is: {0}ms", ts.TotalMilliseconds);
}

 

第三种用API实现:个人感觉以秒为单位来计算程序耗时,数量级有点大了,还是推荐前面两种毫秒级别的……

 

 1         [System.Runtime.InteropServices.DllImport("Kernel32.dll")]
 2         static extern bool QueryPerformanceCounter(ref long count);
 3         [System.Runtime.InteropServices.DllImport("Kernel32.dll")]
 4         static extern bool QueryPerformanceFrequency(ref long count);  
 5         public static void SubTest()
 6         {
 7             long count = 0;
 8             long count1 = 0;
 9             long freq = 0;
10             double result = 0;
11             QueryPerformanceFrequency(ref freq);
12             QueryPerformanceCounter(ref count);
13             //Shuffle(a) is the function you want to test.
14             int[] a = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };
15             Shuffle(a);
16             QueryPerformanceCounter(ref count1);
17             count = count1 - count;
18             result = (double)(count) / (double)freq;
19             //Note:The result is counted by second.
20             Console.WriteLine("DateTime costed for Shuffle function is: {0} s", result);
21         }

 

---------------------

作者:传说中的汽水枪 
来源:CSDN 
原文:https://blog.csdn.net/xzjxylophone/article/details/6832160 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

Well begun is half done ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值