成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

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

項目介紹

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

項目特性

  • 支持的語言: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。

創建控制臺應用

創建名為:BenchmarkDotNetExercise的.NET 9控制臺應用。

安裝 NuGet 包

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

進行性能基準測試

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

(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% 置信區間的一半。
  • 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,但誤差和標準差較小,性能穩定性較好,垃圾回收次數與 SHA1Hash 相同。
  • SHA256Hash 的平均耗時最長,但誤差和標準差最小,性能穩定性最好,垃圾回收次數略少于 MD5Hash 和 SHA1Hash。
  • SHA1Hash 的平均耗時最短,但誤差和標準差較大,表示其性能雖然優越但不太穩定。

性能測試多種格式輸出

  • 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
責任編輯:趙寧寧 來源: 追逐時光者
相關推薦

2025-03-31 00:55:00

2024-11-29 07:32:38

2012-07-31 09:02:49

Apworks

2023-05-19 12:12:07

risiOSFedoraLinux

2023-06-19 07:54:37

DotNetty網絡通信框架

2020-09-16 11:20:03

流計算基準測試

2023-10-26 00:30:00

Excel開源框架

2024-12-19 08:58:50

2022-04-04 10:28:49

C#項目WPF

2024-04-11 08:22:32

AgentQuest語言模型

2012-04-24 09:22:16

軟件測試

2016-09-23 16:36:25

LinuxPCPhoronix

2024-05-24 08:34:16

2021-06-08 07:32:01

框架Mock測試

2024-05-28 07:06:44

2011-07-19 09:35:46

.Net

2023-07-31 09:13:13

ValidatorGolang

2009-07-14 21:41:10

數據中心計算機系統

2020-09-22 10:13:54

開源技術 趨勢

2012-12-18 13:32:45

IBMdW
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久久久久久久久久久午夜片 | 亚洲一区二区三区四区五区中文 | 天天干天天色 | 亚洲精品中文字幕中文字幕 | 午夜影院官网 | 国产专区在线 | 久久激情网 | 亚洲高清在线 | 精品欧美一区二区在线观看欧美熟 | 国产黄色大片在线免费观看 | 精品久久中文 | 亚洲国产精品久久 | 黄色三级在线播放 | 亚洲免费精品 | 伊人99| 久久三区| 午夜成人免费视频 | 亚洲精品一二三区 | 中文字幕精 | 亚洲国产精品自拍 | 最新国产精品 | 精品久久久久久久久久久久 | 国产h在线| 九九久久这里只有精品 | 亚洲欧美综合精品另类天天更新 | 国产成人av一区二区三区 | 欧美五月婷婷 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | 久久狠狠 | 91麻豆精品国产91久久久久久 | www在线视频 | 午夜电影一区二区 | 成av在线 | 国产一级视频在线观看 | 国产美女一区 | 色狠狠一区 | 最新免费av网站 | 性高湖久久久久久久久 | 91国产精品在线 | 国产一区二区免费 | 久久久www成人免费无遮挡大片 |