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

2024-11-29 07:32:38

2025-03-31 00:55:00

2023-05-19 12:12:07

risiOSFedoraLinux

2012-07-31 09:02:49

Apworks

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

2024-04-11 08:22:32

AgentQuest語言模型

2022-04-04 10:28:49

C#項目WPF

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

開源技術 趨勢

2021-07-17 15:25:05

PHP 8.1基準測試開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩第一页 | 国产一区二区在线视频 | 国产精品视频一二三区 | 国产精品无码久久久久 | 免费h在线 | 一级片av| 天天摸天天干 | 精品国产乱码久久久久久老虎 | 久久一本 | 精品成人佐山爱一区二区 | 亚洲天堂av在线 | 黄色永久免费 | 欧美成年网站 | 国产在线精品一区二区 | 日日躁狠狠躁aaaaxxxx | 正在播放国产精品 | 国产亚洲欧美在线视频 | 亚洲精品自在在线观看 | 视频二区 | 不卡一二三区 | 一级毛片免费看 | 免费亚洲婷婷 | 久久草在线视频 | 亚洲欧美中文字幕在线观看 | 羞羞涩涩在线观看 | 韩国av网站在线观看 | 国产精品夜夜春夜夜爽久久电影 | 日韩三级免费观看 | 中文日本在线 | 99久久国产免费 | 成人二区 | 精品乱码一区二区 | 亭亭五月激情 | 青青草原综合久久大伊人精品 | 成人免费视频网站在线看 | 亚欧洲精品在线视频免费观看 | 日本一二三区在线观看 | 91av免费观看 | www.久久.com | 欧美福利一区 | 在线亚洲精品 |