c#程序设定使用期限_三种计算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();

}

}

}

两种计算Java对象大小的方法

之前想研究一下unsafe类,碰巧在网上看到了这篇文章,觉得写得很好,就转载过来.原文出处是: http://blog.csdn.net/iter_zc/article/details/4182271 ...

[转]SQL三种获取自增长的ID方法

最新更新请访问: http://denghejun.github.io   SQL SERVER中的三种获得自增长ID的方法  这个功能比较常用,所以记下来以防自己忘掉. SCOPE_IDENTIT ...

三种dedecms调用相关文章的方法

在文章的末尾或侧边栏添加相关文章可以提高用户的黏度,提高pv,增加se的好印象(哈哈),那么dedecms如何调用相关文章呢?有三种方法可以实现. 第一种dedecms调用相关文章的方法,用默认的li ...

MySQL、SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分页查询的方法

在这里主要讲解一下MySQL.SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分页查询的方法. 可能会有人说这些网上都有,但我的主要目的是把这些知识通过我实际的应 ...

三种将list转换为map的方法(传统方法、jdk8 Stream流、guava)

三种将list转换为map的方法 - jackyrong - ITeye博客:http://jackyrong.iteye.com/blog/2158009

对tableView三种计算动态行高方法的分析

tableView是一个神奇的东西,可以这么说,就算是一个初学者如果能把tableView玩的很6,那编一般的iOS的需求都问题不大了.tableView是日常开发中用烂了的控件,但是关于tableV ...

旧书重温:0day2【2】 实验:三种获取kernel32.dll基址的方法

0x01 找kernel32基地址的方法一般有三种: 暴力搜索法.异常处理链表搜索法.PEB法. 0x02 基本原理 暴力搜索法是最早的动态查找kernel32基地址的方法.它的原理是几乎所有的win ...

Win10计算器在哪里?三种可以打开Win10计算器的方法图文介绍

全新的windows10系统带来了不少新的特性和改变,其中win10的计算器位置就发生了很多的变化,导致很多网友们都以为win10计算器不见了,那么,win10计算器在哪里?如何打开?针对此问题,本文 ...

三种实现PHP伪静态页面的方法(转)

PHP伪静态写法--其一 伪静态又名:URL重写 以下列举了三种方法. 方法一: 比如这个网页 http://www.2cto.com /soft.php/1,100,8630.html 其实处理的脚 ...

随机推荐

ORACLE 移动数据文件 控制文件 重做日志文件

ORACLE数据库有时候需要对存储进行调整,增加分区.IO调优等等,此时需要移动数据文件.重做日志文件.控制文件等等,下文结合例子总结一下这方面的知识点. 进行数据文件.重做日志文件.控制文件的迁移前 ...

Eclipse Android开发环境搭建

要点: 1)已经安装配置好eclipse和jdk环境 2)给eclipse安装ADT插件(支持android开发) 3)安装配置android sdk环境(类似jdk) 4)eclipse中配置and ...

C++中栈的出栈,入栈规则:A,B,C,D,E

考题: 栈底至栈顶一次存放元素 ABCD 在第五个元素E入栈之前  栈中元素可以出栈,则出栈序列可能是_____a d___________. a.  ABCED b.  DBCEA   c.  CD ...

ORACLE 远程连接数据库

通过运行->cmd->sqlplus/nolog 登录sqlplus时,突然间提示“sqlplus不是内部或外部命令,也不 是可运行的程序或批处理文件”,如下图: 分析后感觉不可能啊,因为 ...

【BZOJ 1185】 凸包+旋转卡壳

Description [分析] 打计算几何真的可以哭出来... 跟那个求线段最远点差不多,这题弄三个东西转一转,一个表示左端最远点,一个表示右端最远点,一个表示上面最远点. 左右两边的最远点用点积判 ...

C#学习笔记-状态模式

题目1:通过代码描述每一天的不同时间段的工作效率 分析: 首先确定,工作状态指正在工作,或者以及下班这些情况,而这些情况所受影响的因素包括:当前时间以及任务是否已经完成.所以在Work中需要两个属性: ...

键值编码KVC

动态设置:setValue:属性值 forKey:属性名用于简单路径:setValue:属性值 forKeyPath:属性路径用于复合路径,例如Person有一个Account类型的属性,那么pers ...

js框操作-----Selenium快速入门(八)

js框,就是JavaScript中的警告框(alert),确认框(confirm),提示框(prompt),他们都是模态窗口.什么是模态窗口,大家可以自行百度一下,简单说就是弹出的窗口是在最顶端的,你 ...

[置顶] 我的Android进阶之旅------>Android中制作和查看自定义的Debug版本Android签名证书

Android应用开发接入各种SDK时会发现,有很多SDK是需要靠package name和的证书指纹SHA1码来识别的,如百度地图SDK.这样如果使用默认自动生成的debug的话就会给开发调试工作带 ...

虚方法(virtual)

虚方法(virtual) Virtual 关键字用于修饰方法.属性.索引器或事件声明,并且允许在派生类中重写这些对象. 看一段代码: using System ; class A { public v ...

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值