日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

【愚公系列】2023年02月 .NET/C#知识点-程序运行计时的总结

發布時間:2024/5/14 C# 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【愚公系列】2023年02月 .NET/C#知识点-程序运行计时的总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 一、程序運行計時的總結
    • 1.Stopwatch
    • 2.DateTime.Now
    • 3.ValueStopwatch


前言

在分析一個程序算法時間復雜度時,可以使用統計程序或程序片段的計算時間有助于理解程序性質,許多語言或系統都提供了內部計時功能。

下面主要是講解C#中的計時方式:

  • Stopwatch
  • DateTime.Now
  • ValueStopwatch

一、程序運行計時的總結

1.Stopwatch

Stopwatch 一般用來測量代碼運行消耗時間,以便獲取更多代碼運行性能上的數據。運行前先要調用 Start 函數來開始計時,結束時需要用到 Stop 函數停止計時,中間則可以插入需要監測的代碼。如果有需要也還可以通過 Reset 或者 Restart 函數來重置計時器再開始下一次計時。

using System.Diagnostics;Stopwatch sw = new Stopwatch(); sw.Start(); Thread.Sleep(999); sw.Stop(); Console.WriteLine($"程序耗時:{sw.ElapsedMilliseconds}ms.");Console.ReadKey();

2.DateTime.Now

DateTime是一個包含日期、時間的類型,此類型通過ToString()轉換為字符串時,可根據傳入給Tostring()的參數轉換為多種字符串格式。

DateTime.Now主要是獲取當前時間,所以也可以用于計算程序的執行時間

var start = DateTime.Now; Thread.Sleep(999); var stop = DateTime.Now; Console.WriteLine($"程序耗時:{(stop - start).TotalMilliseconds}ms."); Console.ReadKey();

3.ValueStopwatch

ValueStopwatch主要是.NET Core才出現的,ValueStopwatch 的結構體是為了減少使用 Stopwatch 帶來的內存分配從而提高性能,本質還是Stopwatch。

using System.Diagnostics;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);} }

總結

以上是生活随笔為你收集整理的【愚公系列】2023年02月 .NET/C#知识点-程序运行计时的总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。