文档章节

C#计算一段代码的运行时间

o
 osc_4nmshwhm
发布于 2018/08/06 22:49
字数 234
阅读 7
收藏 0

精选30+云产品,助力企业轻松上云!>>>

第一种方法利用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);
}
也可以使用委托对其进行封装,方便调用:
/// <summary>
   /// 计算时间
   /// </summary>
   /// <param name="function">要被执行的代码</param>
   /// <returns>执行这一段代码耗时,单位:毫秒</returns>
   public static string Stopwatch(Action function)
   {
       System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
       sw.Start();
 
       //开始执行业务代码
       function();
 
       sw.Stop();
       TimeSpan timeSpan = sw.Elapsed;
 
       return (timeSpan.TotalMilliseconds) + "ms";
   }

  

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

salesforce community cloud 1

NO.1 Universal Containers has a Community for their partners. They would like to add a new partner company and grant their users access to the Community. What is the first step ......

jinzongyu
28分钟前
11
0
如何使用PHP计算两个日期之间的差异? - How to calculate the difference between two dates using PHP?

问题: I have two dates of the form: 我有两个日期格式: Start Date: 2007-03-24 End Date: 2009-06-26 Now I need to find the difference between these two in the following form:......

技术盛宴
37分钟前
14
0
SkyWalking 采样率设置

版本:7.0.0 描述 在默认情况下,SkyWalking会采集所有追踪的数据。但是如果系统比较复杂,采集的端点比较多的时候,可能存储压力比较大,这个时候我们可以修改配置,只存储部分的调用链路信...

zm123321
52分钟前
14
0
FusionInsight环境的安装部署(FI的安装部署)

FusionInsight环境的安装部署 FusionInsight的介绍    FusionInsight简称FI,是华为基于大数据平台开发的一个大数据集成软件。使用FI能快速安装部署各种开源hadoop生态系统的大数据开发环境...

xintaiideas
53分钟前
16
0
Akka 网络编程-小黄鸡客服

需求分析 程序网络拓扑图 程序框架图 功能实现 YellowChickenServer.scala package com.akka.yellowchicken.serverimport akka.actor.{Actor, ActorRef, ActorSystem, Props}import com.......

hexiaoming123
58分钟前
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部