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.pswp.cn/news/282209.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282209.shtml
英文地址,請注明出處:http://en.pswp.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…