C# 计算耗时的三种方法

概述

     计算一段程序的耗时是我们在编程中很常见的用法,那这节内容就通过实例的方式来演示几种常用的统计耗时的方法.

方法一:stopwatch

static void Main(string[] args){Stopwatch sw = new Stopwatch();sw.Start();Thread.Sleep(999);sw.Stop();Console.WriteLine($"程序耗时:{sw.ElapsedMilliseconds}ms.");Console.ReadKey();}

最常用的计算耗时的就是使用Stopwatch,使用的时候需要引用命名空间:System.Diagnostics.

运行结果:

程序耗时:1012ms.

方法二:DateTime.Now

static void Main(string[] args){//Stopwatch sw = new Stopwatch();//sw.Start();//Thread.Sleep(999);//sw.Stop();//Console.WriteLine($"程序耗时:{sw.ElapsedMilliseconds}ms.");var start = DateTime.Now;Thread.Sleep(999);var stop = DateTime.Now;Console.WriteLine($"程序耗时:{(stop - start).TotalMilliseconds}ms.");Console.ReadKey();}

运行结果:

程序耗时:1012.2267ms.

方法二:ValueStopwatch

用法举例如下:

using System;
using System.Diagnostics;
using System.Threading;namespace ConsoleApp27
{class Program{ static void Main(string[] args){//Stopwatch sw = new Stopwatch();//sw.Start();//Thread.Sleep(999);//sw.Stop();//Console.WriteLine($"程序耗时:{sw.ElapsedMilliseconds}ms.");//var start = DateTime.Now;//Thread.Sleep(999);//var stop = DateTime.Now;//Console.WriteLine($"程序耗时:{(stop - start).TotalMilliseconds}ms.");var watch = ValueStopwatch.StartNew();Thread.Sleep(999);Console.WriteLine($"程序耗时:{watch.GetElapsedTime().TotalMilliseconds}ms.");Console.ReadKey();}}internal struct ValueStopwatch{private static readonly double TimestampToTicks = TimeSpan.TicksPerSecond / (double)Stopwatch.Frequency;private readonly long _startTimestamp;public bool IsActive => _startTimestamp != 0;private ValueStopwatch(long startTimestamp){_startTimestamp = startTimestamp;}public static ValueStopwatch StartNew() => new ValueStopwatch(Stopwatch.GetTimestamp());public TimeSpan GetElapsedTime(){// Start timestamp can't be zero in an initialized ValueStopwatch. It would have to be literally the first thing executed when the machine boots to be 0.// So it being 0 is a clear indication of default(ValueStopwatch)if (!IsActive){throw new InvalidOperationException("An uninitialized, or 'default', ValueStopwatch cannot be used to get elapsed time.");}var end = Stopwatch.GetTimestamp();var timestampDelta = end - _startTimestamp;var ticks = (long)(TimestampToTicks * timestampDelta);return new TimeSpan(ticks);}}}

运行结果:

程序耗时:1008.0426ms.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/282209.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《HTML5 2D游戏编程核心技术》——第1章,第1.3节特别功能

本节书摘来自华章出版社《HTML5 2D游戏编程核心技术》一书中的第1章,第1.3节特别功能,作者[美] 戴维吉尔里,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 1.3 特别功能 Snail Bait游戏有3个特别的功能&a…

XunSearch的安装和加入服务器开机脚本以及将目录写入系统变量

一、安装xunserach 1、cd ~ 2、wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2 #下载最新xunsearch包 3、tar -xjf xunsearch-full-latest.tar.bz2 #解压xunsearch包 4、cd xunsearch-full-1.4.11/ #进入xunsearch包目录 5、sh setup.sh #执…

dubbo源码解析-zookeeper创建节点

前言 在之前dubbo源码解析-本地暴露中的前言部分提到了两道高频的面试题,其中一道dubbo中zookeeper做注册中心,如果注册中心集群都挂掉,那发布者和订阅者还能通信吗?在上周的dubbo源码解析-zookeeper连接中已经讲到,这周解析的是另一道,即服务提供者能实现失效踢出是根据什么原…

配置mysql为主主复制步骤

mysql版本:mysql-5.6.24-solaris10-sparc-64bit.tar 操作系统:solaris 11g u10 操作用户:使用非root进行操作安装,a路服务器ip地址为192.168.1.1 b路ip地址为192.168.1.2(应改为实际ip地址) 1,安…

XunSearch的使用

一、项目的配置文件 1、要想使用xunsearch,首先需要进行配置文件的配置。 默认目录在app下,如下面的结构,每一个搜索项目都需要有一个ini文件进行相应的配置。 举例: project.name novel project.default_charset utf-8 serv…

《VMware vSphere设计(原书第2版)》——1.1 什么是设计

本节书摘来自华章出版社《VMware vSphere设计(原书第2版)》一 书中的第1章,第1.1节,作者:[美] 福布斯格思里(Forbes Guthrie)斯科特罗威(Scott Lowe)肯德里克科尔曼&…

SqlKata - 方便好用的 Sql query builder

SqlKata查询生成器是一个用C# 编写的功能强大的Sql查询生成器。它是安全的,与框架无关。灵感来源于可用的顶级查询生成器,如Laravel Query Builder和 Knex:https://knexjs.org/。SqlKata有一个富有表现力的API。它遵循一个干净的命名约定&…

编写高质量代码:改善Java的151个建议四(基本类型)21-30

该书籍PDF下载地址:http://download.csdn.net/download/muyeju/10001473 基本类型有8个:byte,short,int,char,long,double,float,boolean 21.用偶判断,不用奇…

ABP vNext微服务架构详细教程(补充篇)——单层模板(下)

业务代码2聚合服务聚合服务层和基础服务层相同的道理,在Demo.Core.Contracts增加Services文件夹,并添加Notifications子文件夹,在其中添加Dtos文件夹并添加两个DTO与基础服务对应:using Volo.Abp.Application.Dtos;namespace Demo…

PHP 电子商城基本数据表

1、品牌表 tp_brand CREATE TABLE tp_brand (id smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT 品牌表,name varchar(60) NOT NULL DEFAULT COMMENT 品牌名称,logo varchar(80) NOT NULL DEFAULT COMMENT 品牌logo,desc text NOT NULL COMMENT 品牌描述,url varcha…

摘要,日志

1.hashlib 模块: 由于数据的不安全性,为了保证用户的信息绝对安全,所有所有人的账号密码不能以明文的形式存储, 而是经过适当的处理以密文的形式存储. hashlib对同一个字符串在不同的语言,不同的环境(操作系统,版本,时间)中加密得到的是同一个密文串,不同的字符串得到的密文是不…

《网站情感化设计与内容策略》一第1章 情感化设计1.1 革命:有失亦有得

本节书摘来自异步社区《网站情感化设计与内容策略》一书中的第1章,第1.1节,作者 【美】Aarron Walter , Erin Kissane,更多章节内容可以访问云栖社区“异步社区”公众号查看 第1章 情感化设计 网站情感化设计与内容策略 1.1 革命&#xff1…

php自动加载机制的实现

一、什么是自动加载 自动加载就是当我们在当前文件中实例化一个不存在的类时,调用自动加载机制引入相应的类文件。 注:自动加载有两种方式(都是php内置的),一种是通过__autoload(),另一种是通过spl_autoload_registe…

MySQL之 从复制延迟问题排查

一、从库复制延迟问题 1、可能的原因如下(1)主从服务器处于不同的网络之中,由于网络延迟导致;(2)主从服务器的硬件配置不同,从服务器的硬件配置(包括内存,CPU&#xff0c…

《树莓派渗透测试实战》——2.12 用例子总结以上步骤

本节书摘来异步社区《树莓派渗透测试实战》一书中的第2章,第2.12节,作者【美】Joseph Muniz(约瑟夫 穆尼斯) , Aamir Lakhani(阿米尔 拉克哈尼),更多章节内容可以访问云栖社区“异步社区”公众号…

申请成为qq互联个人开发者步骤(注意事项)2018

一、官方网址 官方地址:https://connect.qq.com/manage.html#/ 二、申请时注意事项: 1、申请时的名称栏必须填写身份证上的姓名,否则是不给通过的 2、上传照片时,需要本人手持身份证,重点是照片中身份证上头像的位置要…

《Swift开发实战》——第1章,第1.4节启动iOS 8模拟器

本节书摘来自异步社区《Swift开发实战》一书中的第1章,第1.4节启动iOS 8模拟器,作者 李宁,更多章节内容可以访问云栖社区“异步社区”公众号查看 1.4 启动iOS 8模拟器Xcode是一款功能全面的应用程序,通过此工具可以轻松输入、编译…

基于.NetCore开发博客项目 StarBlog - (18) 实现本地Typora文章打包上传

1前言九月太忙,只更新了三篇文章,本来这个功能是从九月初就开始做的,结果一直拖到现在国庆假期才有时间完善并且写文章~之前我更新了几篇关于 Python 的文章,有朋友留言问是不是不更新 .Net 了,那肯定不能啊&#xff0…

《算法导论》读书笔记--第1、2章课后题 (转)

第一章 转自http://www.cnblogs.com/batteryhp/p/4654860.html 思考题 1-1(运行时间的比较)确定时间t内求解的问题的最大规模。 上面是网上提供的答案。 注意点: 1、最左边一列的是关于n的增长情况描述,值得记住的是这些增长的排…

PHP开发自己的框架必备知识点

一、PHP常用的四种数据结构 简介&#xff1a;spl是php的一个标准库。 官方文档&#xff1a;http://php.net/manual/zh/book.spl.php <?php//spl&#xff08;php标准库&#xff09;数据结构/*** 栈&#xff08;先进后出&#xff09;*/ $stack new SplStack(); $stack-&g…