三种计算c#程序运行时间的方法
三种计算c#程序运行时间的方法
第一种:
利用 **System.DateTime.Now **
// example1: System.DateTime.Now method
DateTime dt1 = System.DateTime.Now;
System.Threading.Thread.Sleep(time_cap);
DateTime dt2 = System.DateTime.Now;
TimeSpan ts = dt2.Subtract(dt1);
Console.WriteLine("example1 time {0}", ts.TotalMilliseconds);
第二种
利用Stopwatch
// example2: Stopwatch class
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
sw.Start();
System.Threading.Thread.Sleep(time_cap);
sw.Stop();
TimeSpan ts2 = sw.Elapsed;
Console.WriteLine("example2 time {0}", ts2.TotalMilliseconds);
第三种
利用c++ API
// example3: c++ API
long count1 = 0;
long count2 = 0;
long freq = 0;
double result = 0;
QueryPerformanceFrequency(ref freq);
QueryPerformanceCounter(ref count1);
System.Threading.Thread.Sleep(time_cap);
QueryPerformanceCounter(ref count2);
result = (double)(count2 - count1) / (double)freq;
Console.WriteLine("example3 time {0}", result);
测试结果:
example1 time 2001.486
example2 time 2000.6587
example3 time 2.00032488719712
二三两种方法结果比较准确
完整代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication
{
class Program
{
[System.Runtime.InteropServices.DllImport("Kernel32.dll")]
static extern bool QueryPerformanceFrequency(ref long count);
[System.Runtime.InteropServices.DllImport("Kernel32.dll")]
static extern bool QueryPerformanceCounter(ref long count);
static void Main(string[] args)
{
int time_cap = 2000;
// example1: System.DateTime.Now method
DateTime dt1 = System.DateTime.Now;
System.Threading.Thread.Sleep(time_cap);
DateTime dt2 = System.DateTime.Now;
TimeSpan ts = dt2.Subtract(dt1);
Console.WriteLine("example1 time {0}", ts.TotalMilliseconds);
// example2: Stopwatch class
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
sw.Start();
System.Threading.Thread.Sleep(time_cap);
sw.Stop();
TimeSpan ts2 = sw.Elapsed;
Console.WriteLine("example2 time {0}", ts2.TotalMilliseconds);
// example3: c++ API
long count1 = 0;
long count2 = 0;
long freq = 0;
double result = 0;
QueryPerformanceFrequency(ref freq);
QueryPerformanceCounter(ref count1);
System.Threading.Thread.Sleep(time_cap);
QueryPerformanceCounter(ref count2);
result = (double)(count2 - count1) / (double)freq;
Console.WriteLine("example3 time {0}", result);
Console.ReadLine();
}
}
}
分类:
C++
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具