自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一個基于 .NET 開源、功能全面、易于使用的性能基準測試框架

開發(fā) 開源
BenchmarkDotNet是一個基于.NET開源、功能全面、易于使用的性能基準測試框架,它為.NET開發(fā)者提供了強大的性能評估和優(yōu)化能力。

在軟件開發(fā)領域,性能基準測試是確保軟件系統高效、穩(wěn)定運行的重要環(huán)節(jié)。它可以幫助你評估應用程序的性能,了解其在不同條件下的響應時間、吞吐量、資源利用率等。通過基準測試,你可以確定系統在處理特定工作負載時的性能表現。

項目介紹

BenchmarkDotNet是一個基于.NET開源、功能全面、易于使用的性能基準測試框架,它為.NET開發(fā)者提供了強大的性能評估和優(yōu)化能力。通過自動化測試、多平臺支持、高級統計分析和自定義配置等特性,BenchmarkDotNet幫助開發(fā)者更好地理解和優(yōu)化軟件系統的性能表現。

項目特性

  • 支持的語言:C#、F#、Visual Basic。
  • 支持的操作系統:Windows、Linux、macOS。
  • 支持的架構:x86、x64、ARM、ARM64、Wasm 和 LoongArch64。
  • 支持的運行時:.NET 5+、.NET Framework 4.6.1+、.NET Core 3.1+、Mono、NativeAOT。

創(chuàng)建控制臺應用

創(chuàng)建名為:BenchmarkDotNetExercise的.NET 9控制臺應用。

安裝 NuGet 包

在NuGet包管理器中搜索:BenchmarkDotNet 包進行安裝:

進行性能基準測試

接下來我們對.NET中常見的三種加密哈希函數:MD5、SHA256、SHA1進行性能基準測試,來一起分析一下哪一種哈希算法性能更優(yōu)、效率更快。

(1) HashFunctionsBenchmark

    [MemoryDiagnoser]//記錄內存分配情況
    public class HashFunctionsBenchmark
    {
        private readonly string _inputData;

        public HashFunctionsBenchmark()
        {
            // 使用一個較長的字符串作為輸入,以更好地反映哈希函數的性能
            _inputData = new string('y', 1000000);
        }

        [Benchmark]
        public byte[] MD5Hash()
        {
            using (MD5 md5 = MD5.Create())
            {
                return md5.ComputeHash(Encoding.UTF8.GetBytes(_inputData));
            }
        }

        [Benchmark]
        public byte[] SHA256Hash()
        {
            using (SHA256 sha256 = SHA256.Create())
            {
                return sha256.ComputeHash(Encoding.UTF8.GetBytes(_inputData));
            }
        }

        [Benchmark]
        public byte[] SHA1Hash()
        {
            using (SHA1 sha1 = SHA1.Create())
            {
                return sha1.ComputeHash(Encoding.UTF8.GetBytes(_inputData));
            }
        }
    }

(2) 運行基準測試

    internal class Program
    {
        static void Main(string[] args)
        {
            var summary = BenchmarkRunner.Run<HashFunctionsBenchmark>();
        }
    }

注意一定要設置為:Release模式運行,假如為Debug模式會提示下面異常:

// Validating benchmarks:
//    * Assembly BenchmarkDotNetExercise which defines benchmarks is non-optimized
Benchmark was built without optimization enabled (most probably a DEBUG configuration). Please, build it in RELEASE.
If you want to debug the benchmarks, please see https://benchmarkdotnet.org/articles/guides/troubleshooting.html#debugging-benchmarks.

(3) 分析生成的報告

說明:

  • Mean: 所有測量值的算術平均值。
  • Error: 99.9% 置信區(qū)間的一半。
  • StdDev: 所有測量值的標準差。
  • Gen0: 第 0 代 GC 每 1000 次操作收集一次。
  • Gen1: 第 1 代 GC 每 1000 次操作收集一次。
  • Gen2: 第 2 代 GC 每 1000 次操作收集一次。
  • Allocated: 每次操作分配的內存(僅托管內存,包含所有內容,1KB = 1024B)。
  • 1 ms: 1 毫秒(0.001 秒)。

報告分析:

Method

Mean

Error

StdDev

Gen0

Gen1

Gen2

Allocated

MD5Hash

1.952 ms

0.0169 ms

0.0158 ms

197.2656

197.2656

197.2656

976.9 KB

SHA256Hash

3.907 ms

0.0157 ms

0.0147 ms

195.3125

195.3125

195.3125

976.93 KB

SHA1Hash

1.780 ms

0.0231 ms

0.0193 ms

197.2656

197.2656

197.2656

976.92 KB

  • MD5Hash 的平均耗時稍長于 SHA1Hash,但誤差和標準差較小,性能穩(wěn)定性較好,垃圾回收次數與 SHA1Hash 相同。
  • SHA256Hash 的平均耗時最長,但誤差和標準差最小,性能穩(wěn)定性最好,垃圾回收次數略少于 MD5Hash 和 SHA1Hash。
  • SHA1Hash 的平均耗時最短,但誤差和標準差較大,表示其性能雖然優(yōu)越但不太穩(wěn)定。

性能測試多種格式輸出

  • MarkdownExporter:導出Markdown格式。
  • AsciiDocExporter:導出AsciiDoc格式。
  • HtmlExporter:導出HTML格式。
  • CsvExporter:導出CSV(逗號分隔值)格式。
  • RPlotExporter:導出R繪圖文件格式。
[MarkdownExporter, AsciiDocExporter, HtmlExporter, CsvExporter, RPlotExporter]
public class HashFunctionsBenchmark
{
}

項目源碼地址

更多項目實用功能和特性歡迎前往項目開源地址查看??,別忘了給項目一個Star支持??。

  • 開源地址:https://github.com/dotnet/BenchmarkDotNet
  • 文章示例:https://github.com/YSGStudyHards/DotNetExercises/tree/master/BenchmarkDotNetExercise
責任編輯:趙寧寧 來源: 追逐時光者
相關推薦

2024-11-29 07:32:38

2025-03-31 00:55:00

2023-05-19 12:12:07

risiOSFedoraLinux

2023-06-19 07:54:37

DotNetty網絡通信框架

2012-07-31 09:02:49

Apworks

2020-09-16 11:20:03

流計算基準測試

2023-10-26 00:30:00

Excel開源框架

2022-04-04 10:28:49

C#項目WPF

2024-12-19 08:58:50

2024-04-11 08:22:32

AgentQuest語言模型

2012-04-24 09:22:16

軟件測試

2016-09-23 16:36:25

LinuxPCPhoronix

2021-06-08 07:32:01

框架Mock測試

2011-07-19 09:35:46

.Net

2024-05-24 08:34:16

2024-05-28 07:06:44

2020-09-22 10:13:54

開源技術 趨勢

2023-07-31 09:13:13

ValidatorGolang

2009-07-14 21:41:10

數據中心計算機系統

2012-12-18 13:32:45

IBMdW
點贊
收藏

51CTO技術棧公眾號